Javascript' for循环'在AJAX子功能

时间:2016-05-16 13:50:26

标签: javascript ajax for-loop

我有一个以下列方式与数据库交互的javascript(请参阅下面的代码):

  1. 进入一个循环,该循环遍历名为fruits()的数组。
  2. 对于每个水果,使用一个水果作为参数调用php脚本getFruitData.php(然后它使用该字符串从MySQL数据库返回有关该水果的数据)。
  3. 列出一旦返回的数据。已排除该代码,因为它不是问题所在。
  4. 问题:' num' for loop表现得很狡猾。在ajax函数调用中,它使用正确的数字(分别为0,1和2),因此我将正确的水果发送到数据库并获得正确的信息。但在ajax'成功'功能,' num' 总是 3(fruits数组的长度)。这很奇怪,因为当我运行代码时,返回的结果会逐一显示。

    有谁知道我做错了什么?还尝试了while / for循环以及我在循环内递增的全局num变量,但它带有相同的结果。无法获得' num'的循环值。进入ajax响应函数。

    从技术上讲,我当然可以将num值传递给php,然后返回它,这样可行,但必须有更优雅的方式来做这件事,我也想知道我做错了什么。建议?

    <body>
    <button id="display" value="try"> Goho!</button>
    
    <script>
    $(document).ready(function()
    {
        $("#display").click(function()
        {
            var fruits=["Apple","Orange","Banana"];
    
            for(num=0; num<fruits.length;num++)
          {
            $.ajax(
            {
                type: 'POST',
                url: 'getFruitData.php',
                dataType: 'json',
                // The variable here gets the correct num value (0, 1 or 2)
                data: {variable:fruits[num]},
                success: function( response )
                {
                  var dbEntries = $.map(response, function(el) { return el });
                  // When printing 'response', the correct data is displayed.
                  window.alert (response);
                  // num is always 3 here! (length of the array)
                  window.alert(num);
                }
            });
          }
        });
    });
    </script>
    </body>
    

0 个答案:

没有答案