0

我想使用 Jquery ajax 请求在另一个域中调用休息服务。

我的一段代码是:ad1,city,sp,pc,cn 将由 getElementbyID 获取。

url='http://admin:admin@*******:***/rest/arun_code/results.json'+'?Data.AddressLine1='+ad1+'&Data.City='+city+'&Data.StateProvince='+sp+'&Data.PostalCode='+pc+'&Data.Country='+cn;
   $.ajax({
       type: "GET",
       url: url,
       crossDomain: true,
       async: false,
       dataType: "jsonp",
       contentType: "application/json",
       jsonpCallback: 'jsonCallback',
       success: function (data) {
           alert(data.success);
           alert(resultTemp.Output);

       }

   });

   jsonCallback = function(resultTemp){
       alert("In callback function");
       alert(resultTemp);
     };

在我的网络浏览器控制台中,我收到了这个异常:

Uncaught SyntaxError: Unexpected token :  at results.json :1

使用 Chrome 开发人员工具,我可以阅读响应,这非常好:

{"Output":[{"Latitude":"43.643286156655485","Longitude":"-79.37559537260091"}]}

我没有收到任何带有响应的警报,我想将输出作为警报和可访问的..

我的服务器输出是 json,我必须使用 jsonp 进行跨域请求,如何获得输出的访问权限????请帮我。

谢谢

4

1 回答 1

3

您的问题是响应不是 JSONP。维基百科对 JSONp 的工作原理有很好的解释: http ://en.wikipedia.org/wiki/JSONP

IE

{
    "Name": "Foo",
    "Id": 1234,
    "Rank": 7
}

变成

jsonCallback({"Name": "Foo", "Id": 1234, "Rank": 7});

您不能只在现有服务器上执行正常的 AJAX 请求并期望它做出相应的响应。您需要配置服务器以使用适当的 JSONp 格式进行响应。

于 2013-07-15T09:33:33.373 回答