Javascript 嵌套的getJson();PHP PDO
我已经看了关于这个的其他问题和答案,但似乎不能把我的头围绕着它 我有一个javascript函数: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(
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> ";
});
});
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服务中放入一个有条件的案例并不难,以使其在需要时嵌入用户的信息。