Javascript Ajax 调用在读取文件时总是返回 {"readyState":1}

nit*_*ngh 4 javascript ajax jquery

我使用代码:

 var test = $.getJSON( "about.json");
         console.log(JSON.stringify(test));
Run Code Online (Sandbox Code Playgroud)

和我 about.json 在同一个文件目录中,但我只有{"readyState":1} 我不知道是什么问题。如果我错了,请帮助我。

T.J*_*der 5

getJSON返回它得到的东西,因为它不能;该操作是异步的。相反,它允许您提供回调:

$.getJSON("about.json", function(test) {
    console.log(JSON.stringify(test));
});
Run Code Online (Sandbox Code Playgroud)

jQuery将调用你的函数,当数据已经回来了。

您看到所见内容的原因是您正在为返回的jqXHR对象输出一个 JSON 字符串$.getJSON。显然,该对象上唯一可枚举的、非函数的、非undefined属性是readyState,所以这就是你所看到的。

和我 about.json 在同一个文件目录

(以及在更改为使用上面的代码后,您在下面的评论)

但此时我无法从 json 获取任何数据

请注意,如果您在本地打开的 HTML 文件中执行此操作(例如,一个file:URL,而不是一个http:https:URL),则某些浏览器(例如 Chrome)会禁止所有 ajax 调用。在进行 Web 开发时,使用服务器(即使它是localhost)很重要,因为当您使用本地文件时,很多事情要么不起作用,要么工作方式不同。