首页 > 解决方案 > 循环或 Ajax、PHP 数据调用是否创建多线程奇怪问题

问题描述

我从未见过这样的事情,也不知道为什么/发生了什么。我来自桌面编码背景,感觉就像正在发生多线程。

如果我输入警报,代码和输出工作正常,以检查我的返回,并确保来自 PHP 代码的数据正确,并且它是从函数返回的。

如果我让它以“全速”运行,没有检查警报,它不会显示返回的数据,但会显示在同一函数中构建的所有其他 HTML。

代码流程是这样的,HTML页面构建了一个基本的表格,我正在使用准备好的文档来触发我的主java文件。在 Java 代码中,我使用“while”(while currentdate <= enddate)循环遍历一个日期范围。

在 while 循环中,我将日期发送到另一个函数,然后调用 PHP 文件来获取日期数据,构建 HTML 以进行显示,然后将其返回到 while 循环以显示在页面上。

在这里感觉像是在创建第二个线程。就像 Java 代码没有等待来自 PHP 的数据,而是继续运行,因为它会输出“天”,这不是 PHP 返回的一部分。

在下面的代码中,如果我取消任何警报的注释,它不仅会显示来自 PHP 的数据,还会显示在页面上,让它全速运行,它得到的只是显示当天的 HTML。

function Get_Events(Year_In, Month_In, Day_In)
{

    var EventList = '<table class="InnerTable">\
        <thead>\
        <tr class="DayNumber">\
        <th class="DayNumberCurrent">' + Day_In + '\
        </th>\
        </tr>\
        </thead>';

    var EventDateData = {
        'Action': 'GetEvents',
        'Month': Month_In + 1,
        'Day': Day_In,
        'Year': Year_In
    };

    $.ajax({
        type: "POST",
        url: "Scripts/DataTesting.php",
        dataType: "json",
        data: EventDateData,
        success: function(EventListing) {

            //alert(EventListing[0].EventName); 

            for (var key in EventListing) {
                alert('Has Key');
                if (EventListing.hasOwnProperty(key)) {

                    EventList += '<tr>';
                    EventList += '<td>' + EventListing[key].EventName  + '</td>';
                    EventList += '</tr>';

                }
            }

        },
        error: function (jqXHR, error, errorThrown) {
            //  alert(jqXHR.responseText);
            if (jqXHR.status) {
                alert(jqXHR.responseText);
            } else {
                alert("Non-JQ Error: " + error + ", " + errorThrown);
            }
        }
    });

    EventList += '</table>';
    //alert('HTML: ' + EventList);
    return EventList;
}

标签: javascriptphp

解决方案


推荐阅读