2011-03-06 28 views
0

私のサーバー間の通信には私の使用するAJAXポスト機能があります&ユーザーのWebページ。しかし、私はresuable関数でサーバーからの応答に対処することに問題があります。CallBacksを使用してAJAXポスト機能を再利用する

次の例を参照してください場合は、ライン「ポスト( 『forgotPass.py上&実行呼び出される関数のoutputEmailDetailsResult()ことがわかります。関数であるとき、すなわち、』、emailParam、outputEmailDetailsResult())」 paramとして渡されました。私はそれをやっているか不明だ&(私は彼らがコールバックと呼ばれていると思いますか?)私はパラメータとして関数を渡すことに新しいです

var xmlhttp; 
    function post(dest, params, callbackFunction) 
{ 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      callbackFunction; 
     } 
    } 

    xmlhttp.open("POST",dest,true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send(params); // "fname=Henry&lname=Ford"); 
} 


    function emailLoginDetails() 
{ 
    var emailParam = "email=sam"; // + document.getElementById("forgotEmail").innerText; 
    alert(emailParam); 
    post("forgotPass.py", emailParam, outputEmailDetailsResult()); 
} 

function outputEmailDetailsResult() 
{ 
    try 
    { 
     document.getElementById("statusOutput").value = xmlhttp.responseText; 
    } 
    catch (ex) 
    { 
     document.getElementById("statusOutput").value = "Failed to get response from server"; 
    } 
} 

:しかし、それだけでサーバの応答にreationでポスト関数内で実行する必要があります正しく?

答えて

0

移動括弧。このような。あなたはpostoutputEmailDetailsResult()を呼んでいたなかったので、あなたが実際に結果パラメータではなく、パラメータとしての機能自体outputEmailDetailsResult()機能のを集めて何

if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
    callbackFunction(); 
} 

... 

post("forgotPass.py", emailParam, outputEmailDetailsResult); 

2

私はあなたがする必要があると思いますは、コールバックパラメータから括弧を削除することです。あなたのemailLoginDetailsで

()関数:関数へのコールバックパラメータから

post("forgotPass.py", emailParam, outputEmailDetailsResult); 
+0

返信いただきありがとうございます – Mack

関連する問題