草庐IT

JavaScript XMLHttpRequest.onreadystatechange

coder 2024-07-28 原文

我正在尝试执行一些 AJAX,并且需要知道为什么这段代码没有触发完成或错误警报。我在 Mozilla Firefox 20.0.1

请注意

这段代码更新数据库(我有一个选择语句读取确切的记录来验证它正在更新)我只是不确定为什么我不能得到响应完成时发出警报。

我有这些 GLOBAL(在 javascript 页面的顶部)声明的变量。

var AjaxEnginePage;
var ClientInfoPage;
var XMLHTTP;
AjaxEnginePage = "AjaxEngine.aspx";
ClientInfoPage="getClientInfo.aspx";

创建连接。

 //Creating and setting the instance of appropriate XMLHTTP Request object to a “XmlHttp” variable  
function CreateXMLHTTP()
{
try
{
    XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
    try
    {
        XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(oc)
    {
        XMLHTTP = null;
    }
}
//Creating object in Mozilla and Safari 
if(!XMLHTTP && typeof XMLHttpRequest != "undefined") 
{
    XMLHTTP = new XMLHttpRequest();
}
}

绑定(bind)连接:

function btnUpdateMe_OnClick() {
var me = encodeURIComponent(document.getElementById("MeTextBox").value);  

// construct the URL
var requestUrl = AjaxEnginePage + "?Action=UpdateMe&Me=" + me;

CreateXMLHTTP();

// If browser supports XMLHTTPRequest object
if(XMLHTTP) 
   {
    //Setting the event handler for the response
    XMLHTTP.onreadystatechange = handleStateChange(me);

    //Initializes the request object with GET (METHOD of posting), 
    //Request URL and sets the request as asynchronous.
    XMLHTTP.open("get", requestUrl,  true);

    //Sends the request to server
    XMLHTTP.send(null);     
}

处理状态变化

 function handleStateChange(me) {
  switch (XMLHTTP.readyState) {
    case 0: // UNINITIALIZED
    case 1: // LOADING
    case 2: // LOADED
    case 3: // INTERACTIVE
        break;
    case 4: // COMPLETED
        alert("Success");
        break;
    default: alert("error");
 }

如果需要,我可以提供更多代码。 :( 谢谢。

最佳答案

改变:

XMLHTTP.onreadystatechange = handleStateChange(me);

到:

XMLHTTP.onreadystatechange = function() {handleStateChange(me);};

您正在将 onreadystatechange 设置为调用函数的结果,而不是函数。

关于JavaScript XMLHttpRequest.onreadystatechange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369395/

有关JavaScript XMLHttpRequest.onreadystatechange的更多相关文章

  1. JavaScript XMLHttpRequest.onreadystatechange - 2

    我正在尝试执行一些AJAX,并且需要知道为什么这段代码没有触发完成或错误警报。我在MozillaFirefox20.0.1请注意这段代码是更新数据库(我有一个选择语句读取确切的记录来验证它正在更新)我只是不确定为什么我不能得到响应完成时发出警报。我有这些GLOBAL(在javascript页面的顶部)声明的变量。varAjaxEnginePage;varClientInfoPage;varXMLHTTP;AjaxEnginePage="AjaxEngine.aspx";ClientInfoPage="getClientInfo.aspx";创建连接。//Creatingandsetti

  2. javascript - XHR 可以多次触发 readyState=DONE 的 onreadystatechange 吗? - 2

    W3Cspec建议执行以下操作:一些简单的代码来处理从网络上获取的XML文档中的数据:functionprocessData(data){//takingcareofdata}functionhandler(){if(this.readyState==this.DONE){if(this.status==200&&this.responseXML!=null&&this.responseXML.getElementById('test').textContent){//success!processData(this.responseXML.getElementById('test')

  3. javascript - 未调用 onreadystatechange 的 XMLHttpRequest 原型(prototype) - 2

    我正在尝试检测我的UIWebView中任何ajax调用何时完成。我修改了这个答案中的代码:JavaScriptdetectanAJAXevent尽我所能。这是我的尝试:vars_ajaxListener=newObject();s_ajaxListener.tempOnReadyStateChange=XMLHttpRequest.prototype.onreadystatechange;s_ajaxListener.callback=function(){window.location='ajaxHandler://'+this.url;};XMLHttpRequest.protot

  4. javascript - 猴子补丁 XMLHTTPRequest.onreadystatechange - 2

    猴子如何修补XMLHTTPRequest的onreadystatechange函数。我正在尝试添加一个函数,当从页面发出的每个ajax请求返回时都会调用该函数。我知道这听起来很糟糕,但用例非常特殊。我想将某个SDK与控制台(jqconsole)一起使用,但在不修改外部SDK的情况下显示控制台内ajax调用的状态和结果。我看过thispost它有很好的信息,但没有关于猴子修补回调的信息,这似乎超出了我的JavaScript技能。P.S不能使用jQuery,因为它只支持从jQuery发出的ajax调用,而不是直接从XMLHTTPRequests发出的ajax调用,这里就是这种情况。

  5. javascript - 我怎样才能让 XHR.onreadystatechange 返回它的结果? - 2

    我是JavaScript编程的新手。我现在正在开发我的GoogleChrome扩展程序。这是行不通的代码...:P我想要getURLInfo函数返回它的JSON对象,并且想把它放到resp中。有人可以修复我的代码以使其正常工作吗?functiongetURLInfo(url){varxhr=newXMLHttpRequest();xhr.open("GET","http://RESTfulAPI/info.json?url="+escape(url),true);xhr.send();xhr.onreadystatechange=function(){if(xhr.readyState

  6. javascript - 如何防止整数onreadystatechange的改变 - 2

    我的Ajax有问题。目前,我有5对元素:下拉菜单(span标签)和下拉菜单的内容(ul标签)。关于spantags是一个事件监听器,用于onclick,如果点击了drop-downs出现,当在别处点击时,下拉菜单消失。使用硬编码li的下拉菜单工作正常。但是,我正在尝试填充带有动态生成的使用ajax。但是,Ajax行为不端。关于span我还有另一个事件监听器onchange调用js函数calloptions();,这是我的Ajax。我想要实现的是,如果您选择一个选项,其他下拉菜单中的选项会根据您的选择而变化。我的功能是onchange,从下拉列表0循环到下拉列表5,更改的基于所有选择的值

  7. javascript - 可以用 xhr.onload 替换 xhr.onreadystatechange 来进行 AJAX 调用吗? - 2

    我只需要支持主要的现代浏览器(IE10+、FF、Chrome、Safari)我可以做这个替换吗,因为我想简化我的代码库:来自:xhr.onreadystatechange=function(){if(this.readyState===4){if(this.status===200){o.callback(xhr.responseText);}else{returnfalse;}}else{returnfalse;}};收件人:xhr.onload=function(test){o.callback(xhr.responseText);};我不觉得MDNdocumentation在这方

  8. javascript - 可以用 xhr.onload 替换 xhr.onreadystatechange 来进行 AJAX 调用吗? - 2

    我只需要支持主要的现代浏览器(IE10+、FF、Chrome、Safari)我可以做这个替换吗,因为我想简化我的代码库:来自:xhr.onreadystatechange=function(){if(this.readyState===4){if(this.status===200){o.callback(xhr.responseText);}else{returnfalse;}}else{returnfalse;}};收件人:xhr.onload=function(test){o.callback(xhr.responseText);};我不觉得MDNdocumentation在这方

  9. php - 多次调用 XMLHttpRequest onreadystatechange - 2

    我正在用php实现一个登录系统并使用ajax请求。这是我的要求hr.open("POST",url,true);hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");hr.onreadystatechange=function(){varreturn_data=hr.responseText;if(hr.readyState==4&&hr.status==200){alert('islogged');}elseif(hr.status==400){alert('isnotlogged');}}hr

  10. php - 多次调用 XMLHttpRequest onreadystatechange - 2

    我正在用php实现一个登录系统并使用ajax请求。这是我的要求hr.open("POST",url,true);hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");hr.onreadystatechange=function(){varreturn_data=hr.responseText;if(hr.readyState==4&&hr.status==200){alert('islogged');}elseif(hr.status==400){alert('isnotlogged');}}hr

随机推荐