gpt4 book ai didi

JavaScript/Ajax -- 文档加载,某些控件未加载

转载 作者:行者123 更新时间:2023-12-01 02:24:09 24 4
gpt4 key购买 nike

这有点复杂,但让我尝试总结一下。我有两套 Javascript 代码,它们使用 AJAX 和 JSON(以及 PHP 和...)来获取特定数据并加载一组控件。在一种情况下,从单击事件处理程序调用所有控件都正确加载了正确的数据,一切都很好。在第二种情况下,当页面首次加载时(正确调用,代码在页面加载时执行并且返回值),除非我在代码中添加alert()对话框,否则实际上不会加载几个控件。如果alert()在函数中,则加载控件。温和地说,这是令人困惑的。

不起作用的代码与起作用的代码是相同的。这是加载表单时调用的代码:

function getFirstAward()
{
// this has to go get the first award at the top of the list
// (sort order) by rank and date, and return that to the entryfields:
var namecode = document.getElementById("namecode").value;

// now we need to set up the Ajax code to return just this specific
// award, and stuff it into the fields above ..
$.ajax
({
type: "POST",
url: "<?php echo $admin_html_RootPath; ?>lookups/returnFirstAward.php",
data: { 'namecode' : namecode },
dataType: "json", // return value is json array
//cache: false,
success: function(data)
{
// why is this necessary?
//alert( "First Award in List loaded" );
// first get the data array and break it up ...
document.getElementById("awardcode").value = data[0];
document.getElementById("currentaward").value = data[1];
getAwards();
document.getElementById("awardnumber").value = data[2];
document.getElementById("awarddate").value = data[3];
document.getElementById("eventname").value = data[4];
document.getElementById("region").value = data[5];
// Barony ... is it empty? If not, enable it, and set the value
if ( data[6] != "" )
{
document.getElementById("barony").disabled = false;
document.getElementById("barony").value = data[6];
}
else
{
// empty, enable, set value to empty, and disable it
document.getElementById("barony").disabled = false;
document.getElementById("barony").value = "";
document.getElementById("barony").disabled = true;
}
document.getElementById("royalcode").value = data[7];
// this one is necessary because of the way the code for getRoyals works:
document.getElementById("currentroyalcode").value = data[7];
getRoyals();

document.getElementById("notes").value = data[8];
tinymce.get('notes').setContent(data[8]);
document.getElementById("laurelprimary").value = data[9];
tinymce.get('laurelprimary').setContent(data[9]);
document.getElementById("laurelsecondary").value = data[10];
tinymce.get('laurelsecondary').setContent(data[10]);

// set focus on the currentaward entry:
document.getElementById("currentaward").focus();
}, // end success
error: function( xhr, textStatus, err )
{
//alert( data );
alert( xhr + "\n" + textStatus + "\n" + err );
} // end error
}); // end ajax call
} // end of function: getFirstAward

如果我取消注释alert()对话框,所有控件都会正确显示。如果没有,那么最后四个就没有。我尝试重申该代码以查看是否有帮助(设置不同控件的值等),但它没有产生任何影响。我尝试使用location.reload(),但没有任何好处(无论是否带参数:location.reload(true),都没有区别)。

最佳答案

我认为您的代码在页面完全加载之前执行,并且错过了正确执行代码所需的一些细节/值。尝试以下方法

setTimeout(function() {
getFirstAward();
}, 0); // try changing the duration from 0 to 100/500 whichever works for u.

关于JavaScript/Ajax -- 文档加载,某些控件未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48953249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com