【问题标题】:Return javascript array not working [duplicate]返回javascript数组不起作用[重复]
【发布时间】:2012-07-31 04:01:13
【问题描述】:

我有一个从 PHP 获取一些 JSON 的 javascript 函数。当我得到 JSON 时,我的计划是解析它并将其加载到一个数组中,然后返回该数组,以便我可以在任何地方使用数据。

这是ajax函数:

function get_ajax(route_val){

$.ajax({
            url: "ajax.php",
            dataType: 'json',
            data: { 
                route: route_val
        },
            success: function(result) {
                if(result.error == true){
                    alert(result.message);
                }else{

                    $.each(result, function(key1, value1){

                        //console.log(key1 + ":" + value1);

                        returnarray[key1] = value1;

                    });             

                    return returnarray;
                }

            }
        });


}
</script>

如果我尝试定义say var arr = get_ajax('1'),arr 将为空。我可以从函数内部的数组中发出警报和 console.log 内容,但返回它什么也不返回。

它似乎不存在于函数之外。

有什么想法吗?

【问题讨论】:

    标签: javascript function multidimensional-array return


    【解决方案1】:

    您错误地使用了Ajax,我们的想法是不要使用return 任何东西,而是将数据交给一个称为callback 的函数,该函数处理数据。

    IE:

    function handleData( responseData ) {
        // do what you want with the data
        console.log(responseData);
    }
    
    $.ajax({
        url: "hi.php",
        ...
        success: function ( data, status, XHR ) {
            handleData(data);
        }
    });
    

    return在提交处理程序中执行任何操作都不会执行任何操作,您必须转而交出数据,或者直接在成功函数中执行您想要的操作。

    【讨论】:

    • 谢谢,我什至不知道。一直试图找出为什么我的 ajax 中的某些东西现在它在移动。
    【解决方案2】:

    问题是您的成功函数没有将您的数组返回到任何地方。您需要做的是在成功处理程序内部完全处理您的数据,或者调用另一个方法/函数来完成所需的操作。

    假设它可能看起来像这样:

    success: function(result) {
        if(result.error == true){
            alert(result.message);
        }else{
            $.each(result, function(key1, value1){
                returnarray[key1] = value1;
            });
            //Something like this  
            ajaxHandlers.handleReturnedArray(returnarray);
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果你绝对想让它返回一些东西,你可以做一个同步请求(尽管它不是 AJAX 的重点(异步 JavaScript 和 XML))。

      function get_ajax(route_val){
      
          var returnarray = [];
      
          $.ajax({
              url: "ajax.php",
              dataType: 'json',
              async: false,
              data: { 
                  route: route_val
          },
              success: function(result) {
                  if(result.error == true){
                      alert(result.message);
                  }else{
      
                      $.each(result, function(key1, value1){
                          returnarray[key1] = value1;
      
                      });             
      
                  }
              }
          });
      
          return returnarray;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-10-20
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 2015-09-24
        • 2014-08-20
        • 2010-12-16
        • 1970-01-01
        • 2012-04-22
        相关资源
        最近更新 更多