1

Javaスクリプトのajaxコードがあり、それらは次のとおりです。

var xmlHttp = new GetXmlHttpObject();

function answer()
{

if(xmlHttp.readyState==4)
    {
        alert("response is given");
        alert(xmlHttp.responseXML);
        document.getElementById("bl").innerHTML =xmlHttp.responseText;
        randNum();
    }
else{
        document.getElementById("bl").innerHTML='<img src="so/loading.gif">';
    }
}

function sendCode()
{
var param="";
var sender_name = document.getElementById("sender_name").value;
var sender_emaile = document.getElementById("sender_emaile").value;
var subject = document.getElementById("subject").value;
var message = document.getElementById("message").value;
var security_code=document.feedback.security_code.value;
var security_code_id=document.feedback.security_code_id.value;
var responsibility = 123;

if(sender_name=="" || sender_emaile=="" || subject=="" || message=="" || security_code=="")
{ 

}else{
    param += "sender_name="+sender_name+"&sender_emaile="+sender_emaile+"&subject="+subject+"&message="+message+"&security_code="+security_code+"&responsibility="+responsibility+"&security_code_id="+security_code_id;
    xmlHttp.open("POST","http://www.acn.org/modules.php?name=Feedback&action=response",true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", param.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.onreadystatechange=answer;
    xmlHttp.send(param);
    }
}

しかし、私の問題は xmlHttp.responseXML return Null ですが、Wiresahrk(packet sniffer) で http 応答を確認できました。手動で URL を入力しても応答が得られます。

どのようにデバッグすればよいですか?

編集

Wireshark パケットには多くのサーバー/クライアント プロパティが含まれていますが、Hypertext Transfer Protocolには 2 つの部分とその後のセクションが含まれていると言えます。

最初の部分は

HTTP/1.1 200 OK\r\n

リクエストヘッダーと2番目の部分が含まれています

HTTP チャンク レスポンス

これは、コンテンツでエンコードされたエンティティ本体 (gzip) を言います

次と最後のセクションは次のとおりです。

ライン ベースのテキスト データ: text/html

必要な応答が含まれていますが、 xmlHttp.responseXML または xmlHttp.responseText では表示されません。

<div> some text </div>
4

1 に答える 1

0

問題は、グローバルxmlhttpオブジェクトを使用している可能性があります。

試す

function answer(xmlHttp)
{

    if(xmlHttp.readyState==4)
    {
        alert("response is given");
        alert(xmlHttp.responseXML);
        document.getElementById("bl").innerHTML =xmlHttp.responseText;
        randNum();
    }
    else{
        document.getElementById("bl").innerHTML='<img src="so/loading.gif">';
    }
}

function sendCode()
{
    var param="";
    var sender_name = document.getElementById("sender_name").value;
    var sender_emaile = document.getElementById("sender_emaile").value;
    var subject = document.getElementById("subject").value;
    var message = document.getElementById("message").value;
    var security_code=document.feedback.security_code.value;
    var security_code_id=document.feedback.security_code_id.value;
    var responsibility = 123;

    if(sender_name=="" || sender_emaile=="" || subject=="" || message=="" || security_code=="")
    { 

    }else{
        var xmlHttp = new GetXmlHttpObject();

        param += "sender_name="+sender_name+"&sender_emaile="+sender_emaile+"&subject="+subject+"&message="+message+"&security_code="+security_code+"&responsibility="+responsibility+"&security_code_id="+security_code_id;
        xmlHttp.open("POST","http://www.acn.org/modules.php?name=Feedback&action=response",true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", param.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.onreadystatechange=function(){
            answer(xmlHttp);
        };
        xmlHttp.send(param);
    }
}
于 2013-04-27T13:12:27.753 に答える