javascript - 使用 ASP.NET MVC 项目运行脚本

标签 javascript jquery ajax asp.net-mvc

我正在 MVC 中创建一个项目,其中涉及使用 AJAX 从外部 url 获取 XML。问题是我不能做这样的事情:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

因为我访问的 xml 站点是公共(public)的,所以我收到 XMLHttpRequest 相同域策略错误。我的解决方案是运行服务器端脚本(例如 PHP?)来获取 XML 信息,然后将其转发给我的程序(一个具有每 15 秒更新一次的标记数据的 Google map 项目)使用。

我的问题是,如何将脚本合并到我的项目中以获取 XML?我可以使用 PHP 吗? ASPX?我从来没有做过这样安静的事情,所以我不知道这一切是如何结合在一起的。

为了澄清,这就是我正在做的事情:

public class HomeModel
{
    public string XmlData { get; set; }

    public void GetXml()
    {
        XmlDocument doc1 = new XmlDocument();
        doc1.Load("http://www.nfl.com/liveupdate/scorestrip/ss.xml");
        XmlData = doc1.InnerXml;
    }
}

但这行不通,因为我想使用 AJAX 来获取 XML 数据,这样我就不必刷新整个页面。

最佳答案

嗯,我想这里的问题更多的是道德问题。您尝试访问数据的网站所有者不希望您直接访问该数据并将其重新呈现给另一个客户端。因此会出现相同域策略错误。

您仍然可以在服务器端下载该文件。 IE。在 C# 中,您可以使用 HttpClient .

HttpClient client = new HttpClient();
string file = await client.GetStringAsync('http://www.example.com/myfile.xml');

但是,如果您实际控制提供 xml 文件的服务器,则只需在服务器上启用 xml 文件的 cors(跨域资源共享)即可。

编辑

根据您的编辑,您希望创建一个调用您的代码的 MVC 操作。然后,您可以在自己的服务器端代码上进行 ajax 调用,从而消除 cors 问题。

网址 www.mysite.com/MyXML 现在将从 http://www.nfl.com/liveupdate/scorestrip/ss.xml 返回文件。

public class MyXMLController : Controller
{
    public ActionResult Index()
    {
        XmlDocument doc1 = new XmlDocument();
        doc1.Load("http://www.nfl.com/liveupdate/scorestrip/ss.xml");
        XmlData = doc1.InnerXml;
        return Content(doc1.InnerXml, "text/xml", System.Text.Encoding.UTF8);
    }
}

注意:从道德上讲,我不同意这种方法。

关于javascript - 使用 ASP.NET MVC 项目运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28633755/

相关文章:

java - 将文本框保存到文本文件并在文本框中加载文本文件内容(序列化)Java

javascript - 如何从日期时间字段中提取月份?

Jquery Accordion 从零开始 : Markup for accordion & Jquery performance Q

jQuery 在 AJAX 请求时同时发送 GET 和 POST 参数

javascript - ASP MVC Controller 发布具有不同值的相同 html 输入名称

javascript - 在 JavaScript 中隐藏对象的字段

javascript - 从外部链接每 5 秒更改一次文本

javascript - 页面重新加载未触发文档就绪

javascript - 使用数据过滤器按标签对产品进行分类?

php - JQuery 数据表错误 "Cannot read property ' 长度'未定义”