Javascript 嵌套的getJson();PHP PDO

Javascript 嵌套的getJson();PHP PDO,javascript,getjson,Javascript,Getjson,我已经看了关于这个的其他问题和答案,但似乎不能把我的头围绕着它 我有一个javascript函数: function getStates(theDiv){ var stateGroupData; var stateData; var theGHtml = ""; var theHtml = "<h4>MyPage</h4>"; theHtml = theHtml+"<h5>select a state...</h5>"; $.getJSON(

我已经看了关于这个的其他问题和答案,但似乎不能把我的头围绕着它

我有一个javascript函数:

function getStates(theDiv){
var stateGroupData;
var stateData;

var theGHtml = "";

var theHtml = "<h4>MyPage</h4>";
theHtml = theHtml+"<h5>select a state...</h5>";

$.getJSON("getStateGroups.php", function(data) {
    stateGroupData = data;
    theHtml = theHtml+"<ul>";

    $.each(stateGroupData, function(i,jsonData) {
        theHtml = theHtml+"<li><a href='#"+jsonData.groupName+"'>"+jsonData.groupID+"</a></li><br/>";

        var theSQL = "getStates.php?gid="+jsonData.groupName;

        theGHtml = theGHtml+"<div id='"+jsonData.groupName+"'>";

        $.getJSON(theSQL, function(data2) {   
            stateData = data2;

            $.each(stateData, function(i,jsonData2) {
                                       alert(jsonData2.stateName);
                theGHtml = theGHtml+"<span sname='"+jsonData2.stateName+"' lat='"+jsonData2.centerLat+"' lon='"+jsonData2.centerLon+"' zom='"+jsonData2.zoom+"'>"+jsonData2.stateName+"</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            });

        });
        theGHtml = theGHtml+"</div>";

    });

    theHtml = theHtml+"</ul>";
});

theDiv.html = theHtml+theGHtml;
}
函数getStates(theDiv){
var状态分组数据;
var状态数据;
var theGHtml=“”;
var theHtml=“MyPage”;
theHtml=theHtml+“选择一个状态…”;
$.getJSON(“getStateGroups.php”,函数(数据){
stateGroupData=数据;
theHtml=theHtml+“
    ”; $.each(stateGroupData、function(i、jsonData){ HTML=HTML+“

  • ”; var theSQL=“getStates.php?gid=“+jsonData.groupName; theGHtml=theGHtml+“”; $.getJSON(theSQL,函数(data2){ stateData=data2; $.each(stateData、function(i、jsonData2){ 警报(jsonData2.stateName); ghtml=ghtml+“”+jsonData2.stateName+“”; }); }); theGHtml=theGHtml+“”; }); HTML=HTML+“
”; }); theDiv.html=theHtml+theGHtml; }
第二个(即嵌套的)getJson不返回任何东西。。。两个PHP文件都只是使用PDO从同一个表请求数据。我在每个文件中运行SQL,没有任何问题,所以SQL看起来还可以

这是同步v。调用getJson时出现异步问题

这是同步v。异步问题 对getJson的调用

可能吧。我认为这是你的问题:

stateData = data2;
尝试将其更改为:

var stateData = data2;
第一个设置一个全局变量。第二个函数设置了该函数的局部变量

您可能会从重构整个过程中受益,这样您只需要进行一次AJAX调用。看起来你是在拉扯与一个团体有关的个人。您可以通过单个脚本在服务器上获得更好的性能,该脚本可以在需要时返回与组关联的人员,但在其他情况下只返回组


记住,每次AJAX调用都是对服务器的又一次攻击。

+1删除全局变量始终是一个很好的提示!AJAX回调不能保证按照您调用它们的顺序运行。是的,如果你能控制的话,那些内部AJAX调用正在请求在服务器上重构成一个SQL调用。我不认为这是一个异步/同步问题。所以,让我把这个问题弄清楚……也许可以更改第一个getJson/SQL调用以返回我的所有数据,这样我就不会重复调用了?这是一个建议,它不会解决手头的问题,但会让您的服务器非常高兴!如果我是你的话,我仍然想找出什么不起作用。您是否尝试使用回调的本地变量?您是否使用firebug对其进行了调试,以确保XHR调用传递了正确的参数并返回了正确的JSON?起初,我确实有局部变量,其行为方式与之相同。我使用过Firebug,但在任何时候都没有看到返回的任何错误。是的,如果您这样做,那么它将消除您内部的AJAX问题。同步AJAX调用不是一个好办法。坦白地说,这样做会更好,这样第一个电话就可以返回您正在寻找的内容。在支持调用的web服务中放入一个有条件的案例并不难,以使其在需要时嵌入用户的信息。