0

サーバーから Ajax 呼び出しを取得できません。私は SVN バージョン管理を使用しており、私のコードは私の側で機能しますが、コードを本番側にプッシュした後に問題が発生します。

コードは、私の側では FF、Chrome、および IE で動作します。

サーバーの場合、FF と chrome は動作していますが、IE だけに問題があります。

ここで誰かが私を助けてくれるかどうか疑問に思っていました。どうもありがとう。

私は持っている

//call ajax function
callAjaxToCheck();


//call this function if there are errors
//I am getting Not connect.\n Verify Network error whose status == 0 when using IE on server side only!!!!!

function error_loading(jqXHR, exception){
    if (jqXHR.status === 0) {
        alert('Not connect.\n Verify Network.');
    } else if (jqXHR.status == 404) {
        alert('Requested page not found. [404]');
    } else if (jqXHR.status == 500) {
        alert('Internal Server Error [500].');
    } else if (exception === 'parsererror') {
        alert('Requested JSON parse failed.');
    } else if (exception === 'timeout') {
        alert('Time out error.');
    } else if (exception === 'abort') {
        alert('Ajax request aborted.');
    } else {
        alert('Uncaught Error.\n' + jqXHR.responseText);
    }                 
}

function success(data) { 
    if (data=='jump') {
        $.getScript('inc/haha.js', function() {

            codes....

        });
    }
}


function callAjaxToCheck(){  
    $.ajax({
        url: 'Session.php',
        success: success,
        dataType: "text"
        error: error_loading
    });   
}

更新されたコード:

サーバー側のファイルを参照してください。

私のajax関数が呼び出されていると確信しています...

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    session_start();

     if(isset($_POST['switch'])){
         $_SESSION['image']=$_POST['switch'];

     }

     echo $_SESSION['image'];
4

2 に答える 2

1

jqXHR.status === 0サーバーから何も返されなかったことを意味します。これは、PHP 側で致命的なエラーが発生したか、クライアント側でリクエストがキャンセルされた可能性があります。

あなたのSession.phpコードは、既存のセッションに依存していますか? セッションが見つからない場合はどうなりますか? Internet Explorer は、特定のサンドボックスで AJAX リクエストを介して Cookie を送信することになると、他のブラウザーとは異なるセキュリティ モデルを持っているため、私が質問するだけです。ほとんどの場合、ポリシーは Cookie をまったく送信しないことです (あなたの PHP はこれを取り入れていますか?アカウント?)。

クライアント側では、何を使用してcallAjaxToCheck(). 上記のコードでは、プログラムの実行中に直接呼び出されることを知っています。ただし、これは、stackoverflow に投稿するための単純化にすぎない可能性があります。その AJAX 呼び出しは、ボタンまたはリンクによってトリガーされたことがありますか?

ここにはいくつかの質問があり、実際に述べられている答えがないことを認識しているので、知識に基づいた推測を行い、おそらくセッション/Cookieの問題であると述べます. これを念頭に置いて、P3Pポリシーを実装すると役立つ場合があります。これにより、AJAX 要求で Cookie を送信するように IE に指示できます。ただし、そのためには適切なポリシーを設定する必要があります...少し注意が必要です。これが、簡単な修正を探しているほとんどの開発者が、要求している PHP ファイルの先頭に以下をコピー アンド ペーストするだけの理由です。

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

ただし、これはお勧めしませんが、それが役立つかどうかをすばやく確認する方法になる可能性があります。

于 2012-08-27T22:21:27.333 に答える
1

jQuery Ajax 呼び出しでfalseに設定cacheしてみてください。

function callAjaxToCheck() {  
    $.ajax({
        url: 'Session.php',
        cache: false,
        success: success,
        dataType: "text",
        error: error_loading
    });  
}
于 2012-08-27T22:14:31.333 に答える