在嵌套的ajax调用中获取JSON

时间:2015-01-20 22:02:01

标签: javascript jquery ajax json

http请求发送给某些' request_url'以格式{'成功':1,' html':' thestuff'}

返回json回复

所以当

jQuery.ajax({
   url: 'request_url',
   success: function(response){
      alert(response.html); //'thestuff' is here as expected
   }
});

' thestuff'可以在response.html中按预期找到。但是如果这个ajax被称为“成功”的话。回调另一个ajax请求然后response.html将变空并且' thestuff'即将回应#39;

 jQuery.ajax({
   url: 'some_other_url',
   success: function(some_other_response){
       jQuery.ajax({
       url: 'request_url',
        success: function(respose){
          alert(response.html);    //there is nothing
          alert(response);         //I see 'thestuff' which is expected in 'html' 
        }
     }) 
   }
});

为什么会这样?

更新:' thestuff'包含一些带有{}的js代码我可以假设某些东西可能会混淆,但为什么它适用于单个(非嵌套)ajax请求。

1 个答案:

答案 0 :(得分:0)

没有足够的声誉来评论,所以添加作为答案 以下是关于使用dataType的charlietfl评论的扩展。

我使用dataType =“json”使其工作。根据jQuery文档,Json必须严格格式化。

jQuery.ajax({
   url: 'some_other_url',
   success: function(some_other_response){
      jQuery.ajax({
         url: 'request_url',
         dataType:"json",
         success: function(response){
           alert(response.status);    //there is nothing
           alert(response);         //I see 'thestuff' which is expected in 'html' 
         }
      }) 
    }
});

request_url应该返回这样的内容(注意,应该使用引号而不是撇号)

{"status":"s","html":"some stuff"}