zoukankan      html  css  js  c++  java
  • jQuery中$.getJSON的返回值问题

        在使用$.getJSON获得数据库的返回值后,想将该值return传给其他函数。结果遇到问题。

    $.getJSON(url, data, function(result)
    {
        return result;
    });

           结果其他函数使用该值时,一直显示为空。经过搜索(http://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function),忘记了getJSON()是异步函数的原因在作怪,即函数已经return了,但getJSON仍未执行完。

    复制代码
    附:AJAX同步与异步的区别
    
    以xmlhttp.open()为例:
        如果设置async为同步(false),函数在执行完send后,会继续执行onreadystatechange,等onreadystatechange执行完并取得responseText后才会继续执行下一条语句,所以returnValue一定有值。
        如果是异步(true),返回值一定是null,因为程序执行完send后不等xmlhttp的响应,继续执行下一条语句,所以returnValue还没有来的及变化就已经返回null了。
    
        所以如果想获得xmlhttp返回值必须用同步,异步无法得到返回值。
    复制代码

           将代码修改为

    var res;
    $.getJSON(url, data, function(result)
    {
        res = result;
    });
    return res;

          当其他函数使用该返回值时,可以正常使用。

           但更好的方法是使用.ajax方法:

    复制代码
    var mydata = [];
    $.ajax({
      url: 'data.php',
      data: {age : 20, sex : 'man'},
      async: false,
      dataType: 'json',
      success: function (result) {
        mydata = result.whatever;
      }
    });
    return mydata;
    复制代码

    参考:getJSON api

  • 相关阅读:
    线程 ,进程和协程
    HTML
    自定义进程池的方法
    线程,进程 ,队列 基本用法总结
    socket 和 SocketServer 模块
    json 和 pickel 详解
    面向对象进阶篇
    面向对象基础 反射
    模块
    字符串格式化
  • 原文地址:https://www.cnblogs.com/vertko/p/5889028.html
Copyright © 2011-2022 走看看