为什么我收到这个AJAX脚本的状态404?

时间:2015-05-06 08:38:20

标签: javascript ajax json

我进入了AJAX并且正在使用MAMP Web服务器并尝试实现一个简单的脚本,该脚本应该向我显示这是否有效。我尝试使用XMLHttpRequest()的status属性来追踪问题; 我发现这是404类型的问题(找不到页面),这是令人惊讶的,因为我使用JSON文件来处理与我的ajax脚本位于同一目录中的脚本。

这是AJAX脚本:

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"
    }

]
}

这真令人沮丧。提前谢谢,

Raul Rao

1 个答案:

答案 0 :(得分:1)

  

我正在使用JSON文件来处理与我的ajax脚本位于同一目录中的脚本

json文件的位置与某些JavaScript文件的位置无关。服务器不知道或关心在前端运行的JS文件碰巧从哪里检索,并且无法找到与之相关的任何内容。相反,Ajax URL是相对于所服务页面的URL进行解释的(如果指定为相对;它也可以指定为绝对,在这种情况下它相对于Web文档根目录。)

json.json检索html.html时将起作用的示例:

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

赢得工作的示例:

webroot
    html.html
    js
        js.js       <== doesn't matter where this is
        json.json   <== is not at same level as html.html

检索/json.json的示例(请注意前导斜杠):

webroot
    html
        html.html
    json.json       <== at web root
    js
        js.js