方法似乎无法启动。

时间:2014-05-28 14:41:44

标签: javascript jquery ajax json

我试图使用JSON返回一个我可以操作并稍后使用的数组,但是,当我使用AJAX返回一个JSON编码的字符串时出现问题。我目前正在使用警报作为调试方法,我的警报似乎以错误的顺序触发。

脚本:

<script type="text/javascript"> 
    jQuery(document).on('change', '#ProductNumbers', function()
    {
        selectedIndex = $('#ProductNumbers').prop('selectedIndex');

        var productNumber = $('#ProductNumbers').val();

        var jArray = getCategories( productNumber );
        alert( jArray );
    }); 
</script>

<script type="text/javascript">
    function getCategories( productNumber )
    {
        $.ajax({                                                          
              url: '/php/DBManager/GetCategories.php',         
              data: {
                        ProductNumber: productNumber
                    },

              success: function(result) 
              {
                  alert( result );
                  return result;
              }
            });
    }
</script>

第一个脚本调用第二个脚本,但行警报(jArray);警报未定义,然后我得到警报(结果);来自第二个脚本,它返回它应该的内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

它将是undefined,因为ajax调用是异步,并且在完成ajax调用之前会执行第一个脚本代码。

因此,第一个脚本的警报将在第二个脚本中的警告之前被触发。

你必须在success函数中使用ajax调用返回的对象对它进行任何操作。

任何需要来自ajax调用的数据都必须在完成后完成。为此,请将其置于通话的成功功能中。

例如:

        $.ajax({                                                          
              url: '/php/DBManager/GetCategories.php',         
              data: {
                        ProductNumber: productNumber
                    },

              success: function(result) 
              {
                  //use returned result data like this
                  SomeFunction(result);
              }
            });


function SomeFunction(data)
{

// do any operation here
}