我正在尝试调用以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'
时,我收到此错误
未捕获的语法错误:意外的令牌:
我理解这是因为服务正在返回'json'
而不是jsonp
。
所以我无法弄清楚如何调用返回json内容并处理跨域请求的服务。
答案 0 :(得分: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
答案 1 :(得分:0)
您正在尝试进行失败的跨域调用。
我修改了你的jsFiddle并添加了
async: false,
cache:false
另外将errorObject参数添加到ajax中的“Error”。
您可以看到我的更改 here
我现在得到的答案是“网络错误dom exception 19”。
DOM异常19指的是“网络错误”。
您在Ajax通话中联系的网址是否可用?
如果服务器支持跨域请求!在进行实际的GET / POST调用之前,浏览器会向服务器发出OPTIONS调用,以检查它是否支持跨域请求。检查您联系的服务器是否支持跨域请求。
有关跨域请求的更多详细信息,请参阅此文章,这非常有用: using CORS