2

jquery で ajax 呼び出しを介してスクリプトを実行しようとしています。ただし、結果が得られず、クロムのネットワークビューに「(キャンセル)」ステータスが表示されます。これは、.phpスクリプトを要求した場合にのみ発生し.txtますが、たとえばファイルのみを要求した場合は正常に機能します。one\ntwo\nthree以下のファイルでURLを「test.txt」に変更するとアラートが表示されtest.htmlます。私の Web サーバーは正しく構成されており、ファイルのアクセス許可はすべて適切です。ブラウザからスクリプトをリクエストすると、.php期待どおり「hello」が返されます。以下は私の 3 つのファイルtest.phpですtest.txt

test.html

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8">
      <link rel="shortcut icon" href="/favicon.ico">
      <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
      <title>test</title>
   </head>
   <body>
      <button id="b">click</button>
      <script>
         $("#b").bind("click", function() {
            $.ajax({
               url: "test.php", // test.txt works fine
               type: "GET",
               cache: false,
               success: function(data) {
                  alert(data);
               }
            });
         });
      </script>
   </body>
</html>

test.txt

one
two
three

test.php

<?php
echo "hello";
?>

前述のようにtest.php、ブラウザでリクエストすると正しい「hello」出力が得られるため、正常に実行されます。

-rwxr-xr-x 1 me me 22 Oct 1 02:49 test.php

4

2 に答える 2

2

(Canceled)イライラします。にアクセスするchrome://net-internals/#eventsと、リクエストが取得された理由を詳しく確認できます(canceled)。リクエストが Chrome によってブロックされている理由はいくつか考えられますが、その URL でリクエストに関する詳細情報を取得できます。それでも問題が解決しない場合は、質問を編集してこの情報を含めてください。

于 2013-09-30T17:44:33.330 に答える
1

WAMP または LAMP を使用しているとします。

test.htmlファイルが Web サーバーのディレクトリの外にある場合、Web サーバーは test.php ファイルへのアクセスを阻止します。これは、同一生成元ポリシーwwwに違反しているためです。これにより、ブラウザで test.php ファイルにアクセスすると正常に動作する理由と、この test.html の test.php ファイルへのリクエストが失敗する理由が説明されます。

それほど単純ではないかもしれませんが、これは時々私を悩ませるものでもあります. 特に、デスクトップ上に index.html が配置されている場合。

于 2013-09-30T17:55:31.313 に答える