【问题标题】:return json data in javascript function not working [duplicate]在javascript函数中返回json数据不起作用[重复]
【发布时间】:2013-11-25 09:44:48
【问题描述】:

我是 Ajax 的新手,而且我在获取数据时也是如此。唯一的事情是我无法返回我的数据,我得到了未定义等。这里是代码:

function select_aragement(arragament){
    var arrst = arragament;
    var arrsplit = arrst.split("|");
    var periode = arrsplit[0];
    var id = arrsplit[1];

    var data =$.ajax({
        type: "POST",
        url: 'ajax/prijzen.php',
        data:{
            id: id,
            periode:periode
        },
        dataType: 'json'
    });
    return data.responseText;
}

在这段代码中,arragement 是一个数组。

【问题讨论】:

    标签: javascript ajax function return


    【解决方案1】:

    当 AJAX 调用仍在完成时,data.responseText 不可用。您需要在 AJAX 关闭后等待并使用.done() 函数确保调用已完成。

    这看起来有点像这样:

    $.ajax({ 
      type: 'POST',
      url: 'ajax/prijzen.php',
      data: { what: 'ever' },
      dataType: 'json'
    }).done(function (data) {
      console.log(data);
    });
    

    来自荷兰的问候!

    【讨论】:

    • 丹宝!完美!
    • Graag gedaan/不客气!
    【解决方案2】:

    在 ajax 请求完成之前,来自 ajax 的响应数据将不可用。所以,尝试使用success,如下所示:

    function select_aragement(arragament){
     var arrst = arragament;
     var arrsplit = arrst.split("|");
     var periode = arrsplit[0];
     var id = arrsplit[1];
    
         var data =$.ajax({
           type: "POST",
           url: 'ajax/prijzen.php',
           data:{
               id: id,
              periode:periode
           },
           dataType: 'json'
           success:function(data){
             return data.responseText;
           }
        });    
    }
    

    【讨论】:

      【解决方案3】:

      比约恩是对的。始终考虑等待您的异步调用完成;)

      共有三种类型的回调:done(不推荐成功)、fail(你应该总是在失败时做某事)和always ,“总是”调用(无论请求是否失败)

      我建议您阅读以下内容:http://api.jquery.com/jQuery.ajax/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-18
        • 2010-12-16
        • 1970-01-01
        • 2017-12-15
        • 1970-01-01
        • 2019-03-17
        • 2011-07-06
        • 2021-07-28
        相关资源
        最近更新 更多