Javascript 为什么我会收到这个AJAX脚本的状态404?
我进入了AJAX,正在使用MAMP web服务器,并试图实现一个简单的脚本,该脚本应该会告诉我这是否有效。我试图通过使用XMLHttpRequest()的status属性来跟踪问题; 我发现这是一个404类型的问题(找不到页面),这令人惊讶,因为我正在使用JSON文件来处理与ajax脚本位于同一目录中的脚本 以下是AJAX脚本:Javascript 为什么我会收到这个AJAX脚本的状态404?,javascript,ajax,json,Javascript,Ajax,Json,我进入了AJAX,正在使用MAMP web服务器,并试图实现一个简单的脚本,该脚本应该会告诉我这是否有效。我试图通过使用XMLHttpRequest()的status属性来跟踪问题; 我发现这是一个404类型的问题(找不到页面),这令人惊讶,因为我正在使用JSON文件来处理与ajax脚本位于同一目录中的脚本 以下是AJAX脚本: var xhr = new XMLHttpRequest(); xhr.onload = function() { if (xhr.status === 200) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (xhr.status === 200) {
alert("Good");
}
else if(xhr.status === 304)
{
alert("304");
}
else if(xhr.status === 404)
{
alert("404");
}
else
{
alert("500");
}
xhr.open("GET", 'json.json', true);
xhr.send(null);
这里是我的文件json.json:
{
"events" :
[
{
"location" : "San Francisco, CA"
}
]
}
这真令人沮丧。提前感谢,
劳尔·拉奥
我使用JSON文件来处理与ajax脚本位于同一目录中的脚本
json文件的位置与某些JavaScript文件的位置无关。服务器不知道或不关心前端上运行的JS文件是从哪里检索到的,并且无法找到与此相关的任何内容。相反,ajaxurl是相对于所服务页面的URL进行解释的(如果指定为相对的,也可以指定为绝对的,在这种情况下,它是相对于web文档根的)
从html.html
检索json.json
时可以使用的示例:
webroot
html.html
json.json <== is at same level as html.html
js
js.js <== doesn't matter where this is
webroot
html
html.html
json.json <== is at same level as html.html
js
js.js
它返回404意味着它找不到您的“json.json”文件。使用浏览器开发者工具中的“网络”选项卡查看请求的完整URL。json.json文件是否与执行脚本的页面位于同一文件夹中?是的,json文件位于同一文件夹中。您在回复上述评论时说,“json文件与执行脚本的页面位于同一文件夹中。”但在你的问题中,你说“JSON文件来处理脚本,它与我的ajax脚本位于同一目录中”。这是两件不同的事情。是哪一个?事实上,我认为最好是提到它应该与执行脚本的页面位于同一文件夹中,但除此之外,是的。Sry但“Web服务器的根目录”是什么意思,你是指htdocs,因为它位于根目录中,JSON文件与我的ajax.js文件位于同一文件夹中。这个答案并不能回答我为什么会得到404状态,因为404的意思是“找不到”。是的,我指的是htdocs。没有人知道或关心JS文件在执行时来自何处。Ajax URL是相对于所服务的页面进行解释的。
webroot
html.html
js
js.js <== doesn't matter where this is
json.json <== is not at same level as html.html
webroot
html
html.html
json.json <== at web root
js
js.js