4

私のウェブサイトに登録ページがあります。問題は、次のエラーが発生し始めたことです。

キャッチされていない TypeError: 未定義のプロパティ 'responseText' を読み取ることができません

安全でないヘッダー「Content-length」の設定を拒否した register.php:1

安全でないヘッダー「接続」の設定を拒否しました

最後の 2 つのエラーがなくても (接続、コンテンツ長ヘッダーを設定しない場合)、最初のエラーが発生します。

私のajax機能のために、私はこの関数を使用しています:

function AjaxLoad(xhr, url, cfunc, syn, method, headers, params)
{
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhr.onreadystatechange = cfunc; // This line take place on true/false

    xhr.open(method, url, syn);
    $.each(headers ,function(index, value){
        xhr.setRequestHeader(index, value);
    });
    xhr.send(params);
}

私のjsコードでは、次のように関数を呼び出しています:

var headersObject = {"Content-type" : "application/x-www-form-urlencoded", "Content-length" : userCap.val().length, "Connection" : "close" };    

AjaxLoad(
    xhr,
    "../php/Ajax/captchaValidator.php",
    getResponse,
    false,
    "POST",
    headersObject,
    userCap.attr("name") + "=" + encodeURIComponent(userCap.val())
);

AjaxLoad 引数の説明:

  1. xhr オブジェクト
  2. 位置
  3. onreadystatechange ハンドラ
  4. 同期(trueを渡しても機能しません)
  5. 方法
  6. ヘッダー
  7. キー=値のペア(正しい値を取得するためにテストしました)

これは getResponse 関数です。

function getResponse(){
        var strongEl = capCon.next();
            if(xhr.responseText == "0"){
                if(strongEl.prop("tagName") == "STRONG"){
                    strongEl.getReplace('<strong id="sE">קוד שגוי</strong>');
                }else{
                    capCon.after('<strong id="sE">קוד שגוי</strong>').next();
                }
                bToSubmit = false;
            }else{
                if(strongEl.prop("tagName") == "STRONG"){
                    strongEl.remove();
                }
            }
    }

ネットワークをテストして、ファイルcaptchaValidator.phpがブラウザに到達するかどうかを確認すると、ステータス 200 が表示され、すべて問題ないようです。

私は正しい値をテストしました. 何が変わったのかわからない前にコードは機能しました. しかし, これは私のウェブサイトの登録ページへのリンクです.わかりました, しかし、コンソール タブで言及したエラーが表示されます. 誰かが見てくれれば、とても感謝しています.

4

2 に答える 2

1

ajax を使用して jQuery を使用しようとしている場合は、$.ajaxand friendsを使用します。

$.post(
    "../php/Ajax/captchaValidator.php",
    userCap.attr("name") + "=" + encodeURIComponent(userCap.val()),
    function(responseData) {
        //...
    }
)

xhr変数が のスコープ内にないため、コードは機能しませんgetResponse。XHR オブジェクトを参照するthis代わりに、イベント ハンドラー内で使用できます。xhr

于 2013-06-01T15:37:31.950 に答える