4

我一直在处理的快速问题,但似乎无法解决。

我有一个 ajax 调用,但它没有从 php 文件中得到响应,它似乎正在加载 404。

地址栏中的 url 是“mydomain.com/checkcity/”

带有ajax的文件的位置是“/php/advert/script.php”

要调用的php文件的位置是“/php/advert/available.php”

我通过使用 htaccess 来使用虚拟 url。

这是我的ajax调用:

    $.ajax({
        type: "POST",
        url: "/available.php",
        data: "city="+city,
        success: function(response){
        alert(response);
}
});

这是我的 htaccess 文件:

    <IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

我注意到的一件事是,当我在地址栏中搜索 url 时,它会加载 php 文件,而不是使用 ajax 调用。

我目前在 Apache 2.2 localhost 上运行它

感谢您的任何建议。

4

2 回答 2

3

我假设您在404浏览器的错误日志/控制台中看到错误消息?它还应该显示URL正在返回的404响应,根据您的请求,它将是:http://www.mysite.com/available.php

问题

问题是您的 ajax 调用/在参数的开头包含 a URL。这表示网站的根域(即它指向http://www.mysite.com/available.php)。

url: "/available.php",

解决方案

只需将 url 参数更改为以下正确 URL的之一

url: "http://www.mysite.com/php/advert/available.php",

或者

url: "/php/advert/available.php",

或者

url: "available.php",

或者

url: "./available.php",

澄清代码

$.ajax({
    type: "POST",
    url: "/php/advert/available.php",
    data: "city="+city,
    success: function(response){
        alert(response);
    }
});
于 2013-09-28T23:07:25.343 回答
0

好的,所以我知道这已经过时了,但我想我会回答为什么会这样。我继续做其他事情,这是最后一件事,所以我被迫弄清楚实际上只花了大约半个小时。

Ajax 没有到达 chrome 中的 url,但会在 Firefox 中。然后我发现“adblock”正在阻止 url - 这是因为 url 中有“advert”,一旦我重新定位并重命名文件,它就可以工作了

因此,以防万一有人发现自己处于类似情况。

谢谢

于 2014-03-29T01:39:02.317 回答