我觉得这里有点傻。我的ajax调用每次运行错误:函数。我知道数据以JSON的形式返回,但我已经将数据类型作为jsonp来完成,以允许交叉起源的东西。我不认为我能做任何不同的事情,除非我忘记一些明显的事情。请问这是错的:
function sartleApi(type,endpoint,object,callback){
$.ajax({
contentType: "application/json",
dataType: 'jsonp',
type:type,
data:object,
url:"http://dev.sartle.com/includes/ajax_reviewcomment.php?rid=1178",
success:function(data){
callback(data);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.statusText);
alert(xhr.responseText);
alert(xhr.status);
alert(errorThrown);
}
});
}
答案 0 :(得分:2)
您的网站不支持JSONP。
JSONP只是通过<script>
标记将JSON对象传递给全局回调函数的一种奇特方式。它通过不首先发送AJAX请求来绕过跨源限制,而是创建<script>
标记。
JSON响应如下所示:
{"foo": "bar"}
但JSONP响应是:
some_callback({"foo": "bar"})
PHP脚本没有将JSON响应包装在回调函数中(其名称通常通过callback
GET参数指定),因此您根本无法发出JSONP请求。请求将成功,但不会调用全局回调函数,因此您将无法使用JSON。
答案 1 :(得分:0)
stlll,这似乎是一个跨域问题:请尝试使用此库https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js
作为jsonp
,结果已经是一个带有javascript对象参数的回调函数。确保服务器返回的函数已实现:
服务器可以返回my_callback({...})
。您需要实现my_callback
功能客户端。
在success
和error
函数上放置一些alert / console.log。在发布问题之前,请务必对自己进行一些调试。
在评论中发布:声明ajax调用的返回码。
答案 2 :(得分:0)
因此,为了试图规避跨域问题,使用jSONP结果是一个坏主意。我正在从localhost运行这些调用,所以我已经将ajax调用中的url更改为
url:"http://localhost/includes/ajax_reviewcomment.php?rid=1178"
我将构建此url为动态,以便当前URL始终与服务器的域一致,并且我应该处于良好状态!
答案 3 :(得分:-1)
你需要输入“GET”或“POST”
$.ajax({
contentType: "application/json",
dataType: 'jsonp',
type:type, <<<<<<------ here
data:object,
url:"http://dev.sartle.com/includes/ajax_reviewcomment.php?rid=1178",
success:function(data){
callback(data);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.statusText);
alert(xhr.responseText);
alert(xhr.status);
alert(errorThrown);
}
});
}