0

問題 : Google Chrome での ajax エラー

index.html --- POST ---> page1.php --- リンク ---> page2.html

  1. 「index.html」には、<form>「page1.php」に投稿する </li>
  2. 「page1.php」には「page2.html」へのリンクが含まれています</li>
  3. 「page1.php」には、「ajax.php」への ajax 呼び出しが含まれています</li>

問題を表示する方法は?

  1. 「index.html」にアクセス</li>
  2. 「page1.php」に投稿</li>
  3. 「page2.html」へのリンクをたどる</li>
  4. 戻るボタンで「page1.php」に戻る
  5. F5で「page1.php」をリロード
  6. データの再提出を受け入れる
  7. ajax エラー : ajax 呼び出しが失敗し、空のエラー メッセージが表示される

なんで…あれ?

index.html :

<html>
  <head>
  </head>
  <body>
    index
    <form method="post" action="page1.php">
      <input type="submit">
    </form>
  </body>
</html>

page1.php :

<html>
  <head>
    <script src="jquery-1.10.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
      function call_ajax()
      {
        $.ajax
        (
          {
            type: "POST",
            url: "ajax.php",
            success: function( response )
            {
              console.log( response );
            },
            error: function (xhr, ajaxOptions, thrownError)
            {
              console.log( '%o', xhr );
              console.log( '%o', xhr.responseText );
              console.log( '%o', thrownError );
            }
          }
        );
      }

      $( document ).ready(function() {
        call_ajax();
      });
    </script>
  </head>
  <body>
    page 1
    <a href="page2.html">page2</a>
  </body>
</html>

page2.html :

<html>
  <head>
  </head>
  <body>
    page 2
    <a href="javascript:history.back()">back</a>
  </body>
</html>

ajax.php :

<?php
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  ini_set('error_reporting', E_ALL);
  header('Cache-Control: no-cache, must-revalidate');
  header('Content-type: application/json');
  $r = array( 'message' => 'one two one two, this is a test' );
  echo json_encode( $r );
?>
4

1 に答える 1

0

サーバー/ブラウザの構成に問題がある可能性がありますか?

fastcgi 経由で PHP を使用し、Chromium バージョン 30.0.1553.0 (209444) を実行している lighttpd のローカル インストールで、上記とまったく同じコードでファイルを作成して問題を確認しようとしましたが、問題を再現できませんでした。

コンソールを見ると、index.html から page1.php にアクセスするか、「戻る」リンクを使用して F5 で更新して page2.html から page1.php にアクセスしても、ログには常に正しい出力が表示されます。

Object {message: "one two one two, this is a test"}
于 2013-09-23T15:49:46.377 に答える