0

XMLHttpRequest メソッドを使用して AJAX で単純な XML ファイルをプルしようとしていますが、catch ブロックにヒットし続けます。このメソッドは、まず適切な電子メール エントリについてクライアント側の検証を行い、次に外部 XML ファイルで「禁止された」電子メール アドレスをチェックします。なぜ失敗したのか、誰かが少し光を当てることができますか?コードと感謝は次のとおりです!

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

1 に答える 1

0

あなたはprocessRequest()すぐに電話しています。代わりに割り当てて、 onreadystatechange後で呼び出されるようにします。これを行うには、括弧を削除します。

request.onreadystatechange = processRequest;
于 2012-04-22T00:05:23.553 に答える