jQuery AJAX调用不返回数据

时间:2013-07-26 23:33:33

标签: javascript jquery ajax

我觉得这里有点傻。我的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 个答案:

答案 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功能客户端。

  • successerror函数上放置一些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);
}

});

}

相关问题