出于某种原因,这不起作用:
$.ajax({
url: "News.html",
cache: false,
}).done(function(data) {
$("#content").load(data);
});
它给了我:
GET http://127.0.0.1/News.html 404 (Not Found)
但无论出于何种原因,手动打开该网址(复制粘贴网址)就好了。
我认为它首先与浏览器缓存有关,所以我将cache: false
选项添加到ajax函数中,但即便如此...... argh ..
不在我的access.log
文件中显示为请求的网址。
我想知道的信息,我正在运行:
并取消注释(在/etc/php.ini
中):
此外:
# ls *.html
News.html index.html
这是News.html
的请求标头:
Request URL:http://127.0.0.1/News.html
Request Method:GET
Status Code:404 Not Found
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:127.0.0.1
Referer:http://127.0.0.1/index.php
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest
Content-type:text/html
Date:Tue, 16 Jul 2013 21:55:05 GMT
Server:lighttpd/1.4.32
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.21
到目前为止,评论的结论是,这可能根本不是一个jQuery问题。
考虑到服务器响应所有数据(我已检查发送的原始数据)并且它包含所有内容,但响应标题表示404
。
意思是,找到了数据,但是标题是404 ......至少可以说是奇怪的......
curl 'http://127.0.0.1/News.html' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: 127.0.0.1' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://127.0.0.1/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' --compressed
Here you'll soon find a facebook feed, among other things :)
# echo "wham bam" > zerkms_doesnt_believe.html
#
# python fcgi_app.py
{'FCGI_MAX_CONNS': '1', 'FCGI_MPXS_CONNS': '0', 'FCGI_MAX_REQS': '1'}
经过一些修补,我弄清楚FastCGI协议是如何工作的,我找到了一个符合我需求的客户端,有趣的是它与我的脚本名称相匹配,所以这是输出:
# python fcgi_app.py
('404 Not Found', [('x-powered-by', 'PHP/5.3.21'), ('content-type', 'text/html')], '<html>\n\t<head>\n\t\t<title>test php</title>\n\t</head>\n<body>\nChecking</body>\n</html>', '')
给我的结论是,这实际上是一个PHP问题(即使我讨厌lighttpd因为不尊重200代码,php也应该回复...而且我很抱歉。应该去讨论一下PHP,看看是否有助于我得出结论)
将以下内容放在.php页面的顶部将解决此问题。 请注意,这是一个干净的解决方法,它可以工作,但它肯定不是一个长期的解决方案。
<?php
header("HTTP/1.0 200 Found");
?>
答案 0 :(得分:2)
这有点像同源政策问题。 您指定的路径可能导致问题。 试试
$.ajax({
url: "/News.html",
cache: false,
}).done(function(data) {
$("#content").load(data);
});
让我(我们)知道这是否有帮助。
答案 1 :(得分:2)
这个让我陷入困境。感觉有些强迫性的冲动,我在一个新的Ubuntu 12.10 VM上安装了lighttpd和php5(没有一个方便的BSD)。我必须从poll
修改为kqueue
,但除此之外,我使用了lighttpd.conf。一切都很好。
然后我安装了你的php.ini文件,并在返回正确的内容时BAM http状态404。所以这缩小到php-cgi。
事实证明,当服务启动时,它会记录
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php-5.3/modules/pdo.so' - /usr/local/lib/php-5.3/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
所以id快速搜索并从
更改了php.ini中的一行extension_dir = "/usr/local/lib/php-5.3/modules"
到
extension_dir = "/usr/lib/php5/20100525"
重新启动php-cgi,并将voila状态200与内容一起使用。
答案 2 :(得分:1)
在设置了一个新的OpenBSD 5.3服务器,并使用配置文件进行安装后,我能够缩小根本原因。
在lighttpd.conf中你有server.chroot = "/var/www/"
所以它的所有路径名都从前面排除/ var / www。 php-fastcgi进程没有chrooted,所以它的文件系统视图略有不同。
解决方案#1:
不要chroot lighttpd并将server.document-root
,accesslog.filename
和server.errorlog
更改为绝对路径。
解决方案#2: 使用php-fpm或类似方法使PHP chroot意识到/能够
答案 3 :(得分:-2)
使用简单的 jQuery .load()方法:
$(document).ready(function () {
$("#content").load('News.html');
});