JQuery收到错误404,但可以在Firebug中看到响应

时间:2012-07-23 12:19:34

标签: php jquery codeigniter

我的网站在Codeigniter中开发,使用JQuery post方法检索数据,当我在firebug中看到它显示正确的输出时,它显示404未找到错误。

在本地系统中工作正常。我的网站在实时实例的子域下可能导致问题?。

请提示可能是什么问题。

这是我的htaccess文件

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule> 

以下是萤火虫响应详情

Connection  Keep-Alive
Content-Type    text/html
Date    Mon, 23 Jul 2012 12:28:26 GMT
Keep-Alive  timeout=3, max=29
Server  Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6
Transfer-Encoding   chunked
X-Powered-By    PHP/5.2.17
Request Headers
Accept  text/html, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive

这是我的代码

function updatepanel()
{
$.post("http://svims.noq.co.in/svims/get_token/28" ,
function (d)
{
    $("#tokenview").html(d);
}
);
}

这是萤火虫的反应。

“NetworkError:404 Not Found - http://svims.noq.co.in/svims/token_generator

token_generator 发布http://svims.noq.co.in/svims/get_token/28

404 Not Found         2.36s

======================================== 问题是,子域名和控制器名称不应该相同。我重命名了控制器名称,它工作正常。

3 个答案:

答案 0 :(得分:0)

要检查的两件事......

1号

除非绝对需要,否则不要对ajax请求使用完整的URL ..

$.post("http://svims.noq.co.in/svims/get_token/28" ,
//Should Become:
$.post("/svims/get_token/28" ,

2号

确保您没有回复任何内容或将任何错误或通知转储到您的页面上,因为它会将请求关闭。按Chrome中的F12(Cmd + J)打开开发人员工具包,然后转到网络选项卡,单击xhr在底部,然后再次提交你的ajax并注意POST返回,点击预览,看看它返回什么..在SO上看到这个问题..

Request Monitoring in Chrome

答案 1 :(得分:0)

问题是,子域名和控制器名称不应该相同。重命名控制器名称,它可以正常工作。

答案 2 :(得分:0)

另一个注意事项:某些网络托管默认安装子目录/子域名,如/ stats,/ logs,如果你的网站主机有它们,你可能会因CI而得到404错误

我在子域中创建了一个应用,并将一个控制器命名为“stats”,即使最终内容正确,也会获得404错误标头。更改控制器名称后,错误消失了。