繁体   English   中英

jQuery $ .ajax调用成功,但未返回任何内容。 (jsonp)

[英]jquery $.ajax call succeeds but returns nothing. (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调用未返回任何事实。 我检查了firebug的“ net”选项卡,确实从服务器收到了“ 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属性以使其同步。 由于这通常不是您想要执行的操作,因此您可能应该以其他(异步)方式处理响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM