要取消.php脚本的Ajax请求

时间:2013-09-30 17:31:25

标签: javascript php jquery html ajax

我试图通过jquery中的ajax调用来运行脚本;但是,我没有得到任何结果,并在chrome的网络视图中看到“(已取消)”状态。这仅在我请求.php脚本时发生,但如果我仅请求.txt文件,则可以正常工作;当我在下面的one\ntwo\nthree文件中将网址更改为“test.txt”时,我会收到test.html的提醒。我的网络服务器配置正确,文件权限都合适。如果我从浏览器请求我的.php脚本,它会按预期返回“hello”。以下是我的三个文件,为什么我取消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

2 个答案:

答案 0 :(得分:2)

(Canceled)令人沮丧。如果您转到chrome://net-internals/#events,则可以更详细地了解您的请求获得(canceled)的原因。可能有几个原因导致您的请求被Chrome阻止,但您会在该网址上获得有关您的请求的更多信息。如果您仍然卡住,请编辑您的问题以包含此信息。

答案 1 :(得分:1)

假设您正在使用WAMP或LAMP。

如果您的test.html文件位于网络服务器的www目录之外,则网络服务器将阻止访问您的test.php文件,因为它违反了same origin policy。这可以解释为什么在浏览器中访问test.php文件工作正常,以及为什么test.html对test.php文件的请求失败。

这可能不是那么简单,但这也是我偶尔会遇到的事情。特别是当我在桌面上放置一个index.html时。