我进入了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
答案 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