跨域:解析错误/无法使用JSON Ajax调用加载资源

时间:2011-02-07 17:32:11

标签: jquery ajax json cross-domain

在我们公司,我们有一个代理服务器向手机发送短信,由于一些跨域问题,我有问题得到响应iguess ...因为该应用程序在myCompanyurl.com上 而短信应用程序在myProxyCompanyurl.com上

jQuery.get("http://myproxycompanyurl.com/proxy.php?type=text&mesg=Hello&output=json&number=000000000&callback=?",
      function(response) {
           console.log('test');
           console.log(response);
      }
);

在我的调试控制台中:

> test
> Failed to load resource: cancelled

如果我使用getJSON

jQuery.getJSON("http://myproxycompanyurl.com/proxy.php?type=text&mesg=Hello&output=json&number=000000000&callback=?",
      function(response) {
           console.log('test');
           console.log(response);
      }
);

在我的调试控制台中:

> Parse Error

关键是在两种情况下短信应用程序都可以...我在手机上收到短信,但问题是我无法得到回复,所以我可以向用户发送消息/提醒,一切都很顺利。 ..

2 个答案:

答案 0 :(得分:1)

MyProxyCompanyUrl.com在“JSON”中的响应将导致XMLHttpRequest无法加载http://pubapi.cryptsy.com/api.php?method=marketdatav2。由于跨域问题,请求的资源上不存在“Access-Control-Allow-Origin”标头。

您可以更改代理网站以返回“JSONP”,而无需任何问题即可加载

$(document).ready(function () {
$.ajax({
    type: 'GET',
    url: 'http://myproxycompanyurl.com/proxy.php?type=text&mesg=Hello&output=json&number=000000000&callback=?',
    dataType: 'jsonp',
    success: function (data) {
        console.log(data);
    }
});

});

如果您无权访问代理网站,则可以利用第三方为您执行此操作。例如:jsonp.guffa.com,此网站的代理jsonp网址为http://jsonp.guffa.com/Proxy.ashx?url=http://myproxycompanyurl.com/proxy.php?type=text&mesg=Hello&output=json&number=000000000&callback=?

答案 1 :(得分:-1)

嗯,#2中的错误消息说明了一切......你的服务器返回了无效的JSON,因此无法解析。

看一下这样的实际响应文本:http://json.parser.online.fr/并查看问题所在。