jquery $ .ajax调用成功但没有返回任何内容。 (JSONP)

$(document).ready(function() { $('#button').click(function() { try { var json = $.ajax({url : 'http://www.example.com/experimental/service.php', type : 'jsonp', success : function() {alert('success')}}); alert(json); } catch(err) { alert(err.description) } var sjson = JSON.stringify(json); $('#display').html(sjson); }) }) 

按下按钮后,我收到一条警告信息,上面写着“成功”,还有一条未说明的信息,指的是ajax调用没有返回任何内容。 我检查了萤火虫的’网’标签,确实我从“jsonp1272724228884({})服务器获得了成功的回复;” 有任何想法吗?

我会想象那个alert(json); 显示未定义,因为它在收到响应之前正在运行。

请记住’ajax’是’异步’,因此警报将继续执行并在您的json值有机会被赋值之前执行。

此外,即使它确实有效,您的json变量也只会引用所做的XMLHttpRequest对象。 如果要访问数据本身,则需要在回调中执行此操作。

 var json; $.ajax({ url : 'http://www.example.com/experimental/service.php', type : 'jsonp', success : function(data) { alert('success'); json = data; alert(json); } }); 

编辑:

还有一个error:您可以分配的回调。 如果服务器返回错误代码,则将执行回调。 我认为这是你打算用你的try / catch复制的。

如果要在进行ajax回调后立即使用结果,则必须设置ajax调用的async : false属性以使其同步。 由于这通常不是您想要做的,您应该以不同的(异步)方式处理响应。