0

我正在尝试调用以 json 格式返回数据的服务。我正在使用jquery-ajax请求来获取该响应数据。

 $('#butCallAjax').click(function () {
         $.ajax({
             url: 'my service url',
             type: 'GET',
             data: {},
             success: function (data) {
                 if (data == "success") {
                     alert('request sent!');
                 }
             },
             error: function () {
                 alert('error');
             }
         });
     });

使用此代码我收到错误

Access-Control-Allow-Origin 不允许 Origin 'servername'。

然后我在这里找到了一些答案并通过dataType:'jsonp'在请求中使用解决了这个问题但是当我使用它时,dataType:'jsonp'我收到了这个错误

未捕获的语法错误:意外的令牌:

我知道这是因为 Service 正在返回'json'而不是jsonp.

所以我无法弄清楚如何调用返回 json 内容并处理跨域请求的服务。

Js 小提琴尝试

4

2 回答 2

0

这并不能直接回答你的问题,但它也是实现你正在尝试的一种方式:

您可以使用:

/* java side: */
$.getJSON("URL?some_call_back_function=?", dataToPass, function(data){
// do whatever you like..
});

/* php side: */
 if(isset($_GET['some_call_back_function']) && $_GET['some_call_back_function'] != ''){
     $someJsonToReturn = array('Something'=> "something");
     echo $_GET['some_call_back_function'].'('.json_encode($someJsonToReturn ).')';
 }

我希望这会有所帮助。当我想要跨域时,我通常使用它。

这是它的jquery API: getJson API

于 2013-08-09T18:54:14.443 回答
0

您正在尝试进行失败的跨域调用。

我已经修改了你的 jsFiddle 并添加了

async: false,
cache:false

加上在 ajax 的“错误”中添加了 errorObject 参数。

你可以在这里看到我的改变

我现在得到的答案是“网络错误 dom 异常 19”。

DOM Exception 19 是指“网络错误”。

您在 Ajax 调用中联系的 URL 是否可用?

如果服务器支持,跨域请求是可能的!在进行实际的 GET/POST 调用之前,浏览器会向服务器发出一个 OPTIONS 调用,以检查它是否支持跨域请求。检查您正在联系的服务器是否支持跨域请求。

有关跨域请求的更多详细信息,请参阅这篇非常有帮助的文章: 使用 CORS

于 2013-08-12T05:41:00.123 回答