javascript - 循环或 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;
}
解决方案
推荐阅读
- javascript - Angular 对话框关闭按钮仅适用于调试
- r - 按列值对 R 数据框进行子集,并将与特定值匹配的单元格更改为新值
- python - 组合从 TDA-API python 库返回的多个数据帧
- windows - Windows cmd:如何连接文件名?
- git - Git Merge Branch-对其他分支的特定更改,忽略合并
- postman - 如何分享 Newman htmlextra 报告?
- f# - 如何在 F# Program.fs 中隐藏记录?
- reactjs - 在 react-router-v6 中访问元素外的 URL 参数
- bigdata - Star Schema(数据建模)是否仍然与使用 Databricks 的 Lake House 模式相关?
- python - 使用服务主体访问 Azure Blob 存储但收到错误“无法获取本地颁发者证书”