1

我觉得这里有点傻。我的 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);
    }
});

}
4

4 回答 4

2

您的网站不支持 JSONP。

<script>JSONP 只是一种通过标签将 JSON 对象传递给全局回调函数的奇特方式。<script>它通过首先不发送 AJAX 请求而是创建标签来规避跨域限制。

JSON 响应如下所示:

{"foo": "bar"}

但是 JSONP 响应是:

some_callback({"foo": "bar"})

该 PHP 脚本不会将 JSON 响应包装在回调函数中(其名称通常通过callbackGET 参数指定),因此您根本无法发出 JSONP 请求。请求会成功,但不会调用全局回调函数,因此无法使用 JSON。

于 2013-07-26T23:47:49.410 回答
0

因此,为了试图规避跨域问题,使用 jSONP 被证明是一个坏主意。我正在从本地主机运行这些调用,所以我将 ajax 调用中的 url 更改为

url:"http://localhost/includes/ajax_reviewcomment.php?rid=1178"

我会将此 url 构建为动态的,以便当前 URL 始终与服务器域保持一致,并且我应该处于良好状态!

于 2013-07-26T23:46:55.390 回答
0
  • stlll,这似乎是一个跨域问题:请尝试这个库https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js

  • 结果已经是一个jsonp带有 javascript 对象参数的回调函数。确保实现了服务器返回的函数:服务器可以返回my_callback({...}). 您需要在my_callback客户端实现功能。

  • 将一些 alerts/console.log 放在successerror函数上。在发布问题之前,请务必自己进行一些调试。

  • 如评论中所述:说明 ajax 调用的返回码。

于 2013-07-26T23:42:24.577 回答
-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);
}

});

}

于 2013-07-26T23:43:14.527 回答