【问题标题】:jQuery - can't access to $.get response data [duplicate]jQuery - 无法访问 $.get 响应数据 [重复]
【发布时间】:2013-07-23 14:51:12
【问题描述】:

我有这个代码:

function retrieve_districts(){

var json='';

$.get("http://localhost/aaa/districts.php",function(result, textStatus) {       
    if(textStatus=="success"){
        json=JSON.parse(JSON.stringify(result)); (alert works fine here)
    }
}, "json");

alert(json);

}

但是警报是空的,我该怎么办?非常感谢

【问题讨论】:

  • alert 放在它实际工作的位置有什么问题?
  • 他正在打电话,解析两次,要找出谁是淘气和好人......
  • 对不起,已经有类似的问题了:stackoverflow.com/questions/1639555/…

标签: jquery json get scope


【解决方案1】:

提醒您的 json,不会在代码底部起作用。在 Ajax 调用完成之前不会填充 json 变量,因此警报在 if 语句中可以正常工作。

您可以在 if 语句中放置一个回调方法,并在您的 Ajax 查询完成后将其回调。

【讨论】:

    【解决方案2】:

    欢迎来到异步编程的美妙世界!

    你必须在回调函数中移动alert

    您可能会推动您的代码表现得像同步的,但我不建议这样做,您总是会发现自己在与设计作斗争。

    【讨论】:

      【解决方案3】:

      警报为空,因为执行警报时json 的值为''

      AJAX 在设计上是异步的。因此,虽然在技术上可能它可能会在它后面的另一行代码之前完成(尽管在本示例中它极不可能),但它不是保证。当一个 AJAX 请求启动时,它会在另一个线程中继续,其余的内联代码会立即继续,而无需等待 AJAX 请求完成。

      因此,为了响应您的 AJAX 请求,您需要在回调函数中执行任何操作:

      function retrieve_districts(){
      
          var json='';
      
          $.get("http://localhost/aaa/districts.php",function(result, textStatus) {       
              if(textStatus=="success"){
                  json=JSON.parse(JSON.stringify(result));
                  alert(json);
              }
          }, "json");
      }
      

      传入get()函数的那个​​函数是回调函数,将在AJAX请求完成后执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 2019-09-23
        相关资源
        最近更新 更多