gpt4 book ai didi

javascript - 使用通用参数的 AJAX 调用始终提供 readState = 1

转载 作者:行者123 更新时间:2023-11-28 19:06:04 24 4
gpt4 key购买 nike

我正在编写一个 ColdFusion 应用程序,一旦单击相应的按钮,它就会填充一些 HTML 内容和一些 div。

发生的情况是,readyState 永远不会从初始状态 1 上升。让我抓狂的事实是,我在其他工作正常的模块中使用了相同的 AJAX 代码。

我手动尝试了小程序“___AJAX_load_translator.cfm”中的代码,看看是否可以正常工作(输入带有参数和查询字符串的完整网址)并且它可以工作。

我在这些 javascript 函数中放置了许多警报,以跟踪 url 创建是否正确、参数格式是否正确等等。一切看起来都很好。这真让我抓狂。在 FireFox 和 IE 上结果相同。

function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("No AJAX support.");
return null;
}
}

function setOutput(divID){
if(httpObject.readyState == 4 && httpObject.status == 200){
document.getElementById(divID).innerHTML = httpObject.responseText;
} // else alert(httpObject.readyState + ' ' + httpObject.status);
}

function loadeditor(divID,CP,PP){
<CFOUTPUT>var CF_TOKENS = "CFID=#CFID#&CFTOKEN=#CFTOKEN#";</CFOUTPUT>
var operativeurl= "___AJAX_load_translator.cfm?"+CF_TOKENS+"&CP="+CP+"&PP="+PP;
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("POST", operativeurl, true);
httpObject.onreadystatechange = setOutput(divID);
httpObject.send(null);
}
}

我注意到,将警报放入 setOutput 函数中时,它会突然显示就绪状态 1。然后浏览器状态栏显示等待对服务器的调用的状态,该状态立即消失。看来通话真的在那一刻完成了,可能是恕我直言。

但在我看来,在调用准备就绪(状态 1)之后就不再进行了。似乎被某种方式阻止了。或者,setOutput 函数被停用。也许状态 4 发生了第二次更改,并且回调未注册该状态?在这种情况下,为什么 DIV 没有更新为新内容?

感谢您的帮助。

最佳答案

    httpObject.onreadystatechange = setOutput(divID);
^^^^^^^

您正在此时调用/执行您的 setouput 函数,无论该函数返回什么,都会成为 onreadystatechange 回调“指针”。

删除 (divID) 部分,以便您分配函数本身,而不是它返回的任何内容:

    httpObject.onreadystatechange = setOutput;

关于javascript - 使用通用参数的 AJAX 调用始终提供 readState = 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660402/

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