【问题标题】:Retrieve a local JSON feed with jQuery使用 jQuery 检索本地 JSON 提要
【发布时间】:2014-01-29 22:58:55
【问题描述】:

我正在尝试使用 jQuery 来检索本地 JSON 提要。

出于某种原因,以下内容适用于外部 url,但不适用于 localhost:49171。不知道我做错了什么。

谢谢!

var url = "http://localhost:49171/Service1.svc/GetAllHomePageLineItems";

 $.jsonp({
      url: url,
      callbackParameter: "callback",
      cache: true,
      dataType: 'json',
      success: onSuccess,
      error: function () {
        onError()
      }
    });

function onError() {
  alert("error");
}

function onSuccess(data) {
  alert(data);
}

【问题讨论】:

  • 直接访问url会得到什么?当您进行 ajax 调用时,它是否进入了您的任何回调函数?
  • 你的控制台说什么?
  • 我一直在本地加载 AJAX 时遇到问题。也许这里有人可以提供进一步的帮助。
  • 如果我直接访问url,我可以看到JSON,格式正确。
  • 控制台未报告任何错误

标签: jquery json jsonp


【解决方案1】:

您是否尝试过使用 $.getJson() 函数代替 jsonp?

http://api.jquery.com/jquery.getjson/

【讨论】:

  • 我尝试过使用 $.getJson(),但由于 url 位于不同的端口上而出现错误。
  • 此脚本是否与 JSON 提要位于同一服务器 (localhost) 上?我认为您遇到了跨站点脚本问题。
【解决方案2】:

想通了。这是跨域 AJAX 调用的问题。我必须将 global.asax.cs 文件添加到我的 WCF Web 服务中,它会生成 JSON 并启用跨域 AJAX 调用。

来自 global.asax.cs -

private void EnableCrossDomainAjaxCall() {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin",
                      "*");

        if (HttpContext.Current.Request.HttpMethod == "OPTIONS") {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods",
                          "GET, POST, PUT, DELETE, OPTIONS");
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers",
                          "Content-Type, Accept");
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age",
                          "1728000");
            HttpContext.Current.Response.End();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多