2012-04-22 15 views
0

XMLHttpRequestメソッドを使用してAJAXを使用して単純なXMLファイルを取得しようとしていますが、キャッチブロックを叩いています。このメソッドはまず、適切な電子メール入力のためのクライアント側の検証を行い、外部のXMLファイルで「禁止された」電子メールアドレスをチェックします。誰かがなぜそれが失敗するのかについて少し光を当てることができますここでコードとありがとう!クライアント側のXMLHttpRequestの問題

function validateEmail() { 

var email = document.forms["feedback"]["email"].value; 
var atpos = email.indexOf("@"); 
var dotpos = email.lastIndexOf("."); 
var url = "ajaxtest.xml"; 


// validates the format of the email address 
    if (atpos < 1 || 
    dotpos < atpos + 2 || 
    dotpos + 2 >= email.length){ 

    document.getElementById('emailmsg').innerHTML = "Gotta get this right!"; 
    document.forms["feedback"]["email"].focus(); 
    return false; 
    } else { 
    getXML(url) 
    } 
} 
function getXML(url) { 

    try { 
var request = new XMLHttpRequest(); 

    request.onreadystatechange = processRequest(); 
    request.open('GET', url, true); 
    request.send(null); 

} 
catch (e) 
    { 
    alert('Request Failed'); 
    } 
} 
function processRequest() { 

    if (request.readyState == 4 && request.status == 200) { 

    var XMLobject = request.responseXML; 
var emails = XMLobject.getElementsByTagName("email"); 

    for (var i = 0; i < emails.length; i++) { 

     var badEmails = emails.item(i); 
     var badEmail = badEmails.value; 

     if (badEmail == email) { 

     document.getElementById('emailmsg').innerHTML = "You are a bad man!"; 
     } else { 
     alert("not on the naughty list"); 
     } 
     } 
    } 
} 

答えて

0

あなたはすぐにprocessRequest()と呼んでいます。代わりにonreadystatechangeに割り当てたいので、後で呼び出されます。これを行うには、かっこを削除します。

request.onreadystatechange = processRequest; 
関連する問題