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

标签 javascript jquery html coldfusion

我正在编写一个 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/

相关文章:

Javascript Replace() 函数在 jQuery UI 对话框中不起作用

javascript - 保存门票的正确方法

javascript - 提交表单而不重定向

javascript - 针对引荐来源网址字符串进行正则表达式检查

html - 需要修复图片主题主页

javascript - 额外的斜杠出现在 json 数组中

javascript - 获取 div 标签内元素的值

javascript - 根据动态内容动态调整div的大小?

javascript - 在引导表问题中打开引导选择

html - 如何使单击按钮的效果持续 0.5 秒?