Вложенные getJson () и PHP PDO - PullRequest
       10

Вложенные getJson () и PHP PDO

0 голосов
/ 22 апреля 2011

Я смотрел на другие вопросы и ответы по этому поводу, но, похоже, не могу обернуться вокруг этого ...

У меня есть функция 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;
}

Второй (т.е. вложенный) getJson ничего не возвращает ... Оба PHP-файла просто используют PDO для запроса данных из той же таблицы. Я запускаю SQL в каждом файле без каких-либо проблем, поэтому SQL выглядит нормально.

Это проблема синхронизации v. Async с вызовами getJson?

1 Ответ

1 голос
/ 22 апреля 2011

Это проблема синхронизации с асинхронным звонки getJson?

Возможно. Я думаю, что это ваша проблема:

stateData = data2;

Попробуйте изменить это на:

var stateData = data2;

Первый устанавливает глобальную переменную. Второй устанавливает переменную, которая является локальной для этой функции.

Возможно, вы выиграете от рефакторинга всего этого процесса, так что вам потребуется сделать только один вызов AJAX. Похоже, вы тянули отдельных людей, связанных с группой. Вы получите лучшую производительность на сервере благодаря одному сценарию, который может при необходимости возвращать людей, связанных с группой, но в противном случае просто возвращает группу.

Помните, что каждый вызов AJAX - это еще один удар по вашему серверу.

...