1

私はたくさんのデモと AJAX と JavaScript のチュートリアルを見てきましたが、これを正しく動作させることができないようです。これが私が持っているものです...

function createRequestObject() {
var ro = false;
if (window.XMLHttpRequest) {             // Mozilla, Safari, ...            
    ro = new XMLHttpRequest();
} else if (window.ActiveXObject) {       // IE                              
    try {
        ro = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            ro = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) { }
    }
}
return ro;
}


function ajaxrequest(){
var http = createRequestObject();
if(http) {
    var name = "Strassburg";
    var message = "Strike three you're out";
    http.open('post', '/server/shout.php');
    // needed in order for most servers to see POST data                    
    http.setRequestHeader('Content-Type',
                          'application/x-www-form-urlencoded');
    http.onreadystatechange = function() {
        if(http.readyState == 4){
            if(http.responseText.indexOf(':' != -1)) {
                var data = http.responseText.split(':')
                alert(data)
            }
        }
    };
    http.send('name=' + name + '&message=' + message);
}

}

現在、静的テキスト (ユーザーが入力したフィールドを使用する代わりに名前とメッセージ) を使用していますが、空のアラートが表示されます。readyState が 4 に設定されている場合、これは ajax 呼び出しが成功したことを意味します。これserver/shout.phpは私に与えられたもので、php をよく理解していませんが、その断片が必要な場合は、ここにも置くことができます。

4

2 に答える 2

1

この行 http.responseText.indexOf(':' != -1)

( ":" != -1 ) = true であるため、indexOf は responseText で true を探しています。

これを試してください http.responseText.indexOf(':') !== -1

于 2013-05-01T19:26:33.820 に答える
1

readyState == 4 は、リクエストが完了したことを意味します。OK かどうかを確認するには、http.status == 200 を確認してください

if (http.readyState == 4) {
 if(http.status == 200) {
   alert(http.responseText);
 }
}

PS コメントする必要がありますが、あなたの投稿にコメントするのに十分な評価がありません

于 2013-05-01T19:28:23.137 に答える