使用ajax从不同的服务器/域访问JSON数据

时间:2015-05-21 15:29:11

标签: javascript jquery ajax json

我正在尝试从其他服务器/域获取JSON数据/文件。

我的理解是,从下面的代码我应该能够看到成功警报,但我看到错误提醒

$.ajax({
                    url: "http://xxxx.com/zzzz",
                    dataType: 'jsonp', 
                    success: function (json) {
                        alert("Success");
                    },
                    error: function () {
                        alert("Error");
                    }
                });

在firebug控制台中,我看到了这个错误

SyntaxError: missing ; before statement


"responseHeader":{

如果我在浏览器中打开URL,我可以看到JSON数据,但无法获取并解析。

如果我点击浏览器中的URL以供参考

,这是JSON数据的起始部分
{
  "responseHeader":{
    "status":0,
    "QTime":4576,
    "params":{
      "q":"*:*",
      "facet.limit":"10",
      "facet.field":["DataSet",
        "Site",
        "Year",
        "Product"],
      "indent":"true",
      "wt":"json",
      "facet":"true"}},
  "response":{"numFound":260682,"start":0,"docs":[
      {

我在这里做错了什么或者我应该尝试不同的方式来访问其他域的JSON数据。

请建议。提前致谢

3 个答案:

答案 0 :(得分:0)

试试这个:

    $.ajax({
                url: "http://xxxx.com/zzzz",
                dataType: 'json', 
                success: function (json) {
                    alert("Success");
                },
                error: function () {
                    alert("Error");
                }
            });

答案 1 :(得分:0)

尝试将数据类型从“jsonp”更改为“json”

答案 2 :(得分:0)

我认为您的响应是有效的JSON字符串,但不是有效的JSONp。 JSONp中的p代表“填充”。这意味着响应必须包含在JavaScript函数中,并返回内容类型text / javascript请参阅下面的示例:

myCalllbackFunc({ my: "data" });

当您使用jQuery时,库会将回调变量作为查询参数传递给您的后端。该值定义回调函数的名称。

http://your.host/json?callback=fooBarFunc

应该导致这个

fooBarFunc({ my: "data" });

干杯, 彼得

BTW:除JSONp外,您可以使用CORS进行跨源资源共享:) http://www.html5rocks.com/en/tutorials/cors/