Javascript 没有这个问题,因为这会强制约束i的当前值,而不是其未来值。这是一个小问题,但不是他遇到的最大问题。这是一个主要问题,因为他的div不匹配。这就是为什么它没有显示其中一个分区的原因,即使他修复了该分区,由于异步回调中如何处理i,也只会填充其中一个分区。另外,

Javascript 没有这个问题,因为这会强制约束i的当前值,而不是其未来值。这是一个小问题,但不是他遇到的最大问题。这是一个主要问题,因为他的div不匹配。这就是为什么它没有显示其中一个分区的原因,即使他修复了该分区,由于异步回调中如何处理i,也只会填充其中一个分区。另外,,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,没有这个问题,因为这会强制约束i的当前值,而不是其未来值。这是一个小问题,但不是他遇到的最大问题。这是一个主要问题,因为他的div不匹配。这就是为什么它没有显示其中一个分区的原因,即使他修复了该分区,由于异步回调中如何处理i,也只会填充其中一个分区。另外,在编写代码时,您的代码甚至无法正确地将查询从数组中拉出(因为数组索引当然从0开始)。是的,您同意查询需要从0开始。但我不确定你所说的异步i是什么意思。即使在您的解决方案中,它也始终保持同步。第一次成功时我将为零,第二次成功时我为一?否,因为在f




没有这个问题,因为这会强制约束
i
的当前值,而不是其未来值。这是一个小问题,但不是他遇到的最大问题。这是一个主要问题,因为他的div不匹配。这就是为什么它没有显示其中一个分区的原因,即使他修复了该分区,由于异步回调中如何处理
i
,也只会填充其中一个分区。另外,在编写代码时,您的代码甚至无法正确地将查询从数组中拉出(因为数组索引当然从0开始)。是的,您同意查询需要从0开始。但我不确定你所说的异步i是什么意思。即使在您的解决方案中,它也始终保持同步。第一次成功时我将为零,第二次成功时我为一?否,因为在
for
循环中,因为AJAX调用是异步的,所以
i
在调用任何回调之前都将等于2。将
i
绑定到函数参数的我的版本没有这个问题,因为这会强制绑定
i
的当前值,不是它的未来价值。这不是OP问题的答案。这不是OP问题的答案。AJAX API永远不应该假设它知道将要使用它的页面布局。@Alnitak但他有两个确切的div,他想以平日的方式填充。此外,如果html是动态生成的,则可以将其作为json的一个元素返回。我不知道你为什么对答案投了否决票,我给出了,它只描述了一种可能的方法。如果您没有注意到,代码是从php返回的JSON对象,甚至可以自动生成,因此我并不真正理解您的反对意见。但是thx。否决票是因为这是一个糟糕的设计。如果API将在不使用相同ID的不同页面上使用,该怎么办?客户端JS的工作是决定填充哪个div,而不是服务器的工作。AJAX API永远不应该假设它知道将要使用它的页面布局。@Alnitak但他有两个确切的div,他想按常规填充。此外,如果html是动态生成的,则可以将其作为json的一个元素返回。我不知道你为什么对答案投了否决票,我给出了,它只描述了一种可能的方法。如果您没有注意到,代码是从php返回的JSON对象,甚至可以自动生成,因此我并不真正理解您的反对意见。但是thx。否决票是因为这是一个糟糕的设计。如果API将在不使用相同ID的不同页面上使用,该怎么办?客户端JS的工作是决定填充哪些div,而不是服务器的工作。谢谢!这是一个非常小的公司内部使用的网站,所以我不太担心暴露原始SQL接口。但是,我假设作为一个一般性的指导原则,这应该放在php脚本中?@Constantino是的,绝对不应该将SQL直接公开给web界面。有人可能会破坏您的页面并从表1发送
DELETE*
@Constantino p.s.。虽然HTML5中允许使用完全数字的ID,但CSS3中不允许使用,因此您永远不能像这样在内容中添加特定于ID的样式。感谢所有提示。我已经将SQL迁移到php,并将ID调整为不完全是数字。谢谢!这是一个非常小的公司内部使用的网站,所以我不太担心暴露原始SQL接口。但是,我假设作为一个一般性的指导原则,这应该放在php脚本中?@Constantino是的,绝对不应该将SQL直接公开给web界面。有人可能会破坏您的页面并从表1发送
DELETE*
@Constantino p.s.。虽然HTML5中允许使用完全数字的ID,但CSS3中不允许使用,因此您永远不能像这样在内容中添加特定于ID的样式。感谢所有提示。我已经将SQL移到php中,并将ID调整为不完全数字。不,不会-您没有引用
查询
数组的正确元素。我可以向您保证它不会。您在这里编写的代码现在无法更好地访问
查询[0]
,但是将当前查询和索引传递给
callAjax
函数会更简洁,使该函数完全独立于外部范围中的
查询
变量。一旦你做到了这一点,那么代码在语义上就等同于我的
。每个基于
的方法。是的,我同意,但在这种情况下,“查询”是在开发人员编写的范围内,因此,请尽力做到这一点。我确实同意您所做的是最好的方法,因为他正在使用jQuery。这是真的,但是通过将查询作为参数而不是使用作用域变量,使函数独立于
查询
数组,从而使函数更有用。使用外部作用域变量有很好的时间和地点,但这不是其中之一。不,它不会-您没有引用
查询
数组的正确元素。我可以向您保证它不会。您在这里编写的代码现在无法更好地访问
查询[0]
,但是将当前查询和索引传递给
callAjax
函数会更简洁,使该函数完全独立于外部范围中的
查询
变量。一旦你做到了这一点,那么代码在语义上就等同于我的
。每个基于
的方法。是的,我同意,但在这种情况下,“查询”是在开发人员编写的范围内,因此,请尽力做到这一点。我确实同意您所做的是最好的方法,因为他正在使用jQuery。这是真的,但是通过将查询作为参数而不是使用作用域变量,使函数独立于
查询
数组,从而使函数更有用。有很好的时间和地点使用外部范围变量,但这不是其中之一。
<div id="1"></div>
<div id="2"></div>
<script>
    var queries = ["SELECT * from table1", "SELECT * from table2"]

    for (var i = 0; i < queries.length; i++) {
        $.ajax({
            url: "querySQL.php",
            type: "GET",
            cache: false,
            data: {query: queries[i]},
            success: function(data) {
                $("#" + i).html(data);
            }
        });
    }
</script>
$.each(queries, function(i, query) {
    $.ajax({
        url: "querySQL.php",
        type: "GET",
        cache: false,
        data: { query: query },
        success: function(data) {
            $("#" + (i + 1)).html(data);  // NB: i starts at 0, not 1
        }
    });
});
i=1; i <= queries.length; i++
{firstResult:{divToUse: "#1", dataToFill: "#1 content"}, 
 secondResult:{divToUse: "#2", dataToFill: "#2 content"},
 ....
}
 var queries = ["SELECT * from table1", "SELECT * from table2"];

       function callAjax(i){
            $.ajax({
                url: "querySQL.php",
                type: "GET",
                cache: false,
                data: {query: queries[i]},
                success: function(data) {
                   console.log(i)
                    $("#" + (i+1).html(data);
                }
            });
    }
       for (var i = 0; i < queries.length; i++) {

         callAjax(i)  

        }