2013-05-04 3 views
6

私はAJAXをやろうとしていますが、なぜこのコードが完了またはエラーアラートを発していないのかを知る必要があります。私は、MozillaのFirefox 20.0.1JavaScript XMLHttpRequest.onreadystatechange

にいる私は(私はそれが更新されます確認し、正確な記録を読んでselect文を持っている)は、データベースを更新 ISこのコード

に注意してください。応答が完了したときに警告が表示されない理由を確かめてください。

私はこれらのGLOBAL(javascriptページの最上部にある)で宣言された変数を持っています。

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

接続の作成。必要であれば、私はより多くのコードを提供することができます

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"); 
} 

ハンドル:接続を結びつける

//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(); 
} 
} 

。 。:(おかげ

+1

をこの行で。 、 'XMLHTTP.onreadystatechange = handleStateChange(私);'、あなたは直ちに 'handleStateChange'を呼び出し、その戻り値を' onreadystatechange'に返します(何も返しませんので、戻り値は 'undefined'です)。 'onreadystatechange'は関数への参照を期待しています。また、 'me'を渡しますが、' handleStateChange'関数では使用しません。 – Ian

+0

私は、私を使用していないことを認識して謝罪しています。 – Kulingar

+0

謝罪する必要はない、私はちょうど私がそれを指摘すると思った。それは関数で使用されていないので、あなたの問題を修正する方が簡単です。それが必要な場合は、もう少し追加する必要があります – Ian

答えて

11

変更:

XMLHTTP.onreadystatechange = handleStateChange(me); 

へ:

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

あなたはいない関数には、関数を呼び出した結果にonreadystatechangeを設定している