Javascript 获取json文件时出错
我有一个javascript文件,用于获取json文件,如果成功,它将执行一个函数,如果失败,它将显示一个警告窗口,显示“error”,但尽管语法看起来正确,但我每次都会收到一个带有错误的警告窗口 这是两个文件Javascript 获取json文件时出错,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我有一个javascript文件,用于获取json文件,如果成功,它将执行一个函数,如果失败,它将显示一个警告窗口,显示“error”,但尽管语法看起来正确,但我每次都会收到一个带有错误的警告窗口 这是两个文件 var firstName = []; var lastName = []; var email = []; var password = []; var i; function insertRecord() { $.ajax({ type: "GET", url: "
var firstName = [];
var lastName = [];
var email = [];
var password = [];
var i;
function insertRecord() {
$.ajax({
type: "GET",
url: "studio.json",
dataType: "json",
success: insertData,
error: function(){ alert("error"); }
});
function insertData(data) {
if (localStorage) {
for (i = 0; i < data.User.length; i++) {
localStorage.setItem(firstName[i], data.User.firstName[j]);
localStorage.setItem(lastName[i], data.User.lastName[j]);
localStorage.setItem(email[i], data.User.email[j]);
localStorage.setItem(password[i], data.User.password[j]);
}
localStorage.setItem(firstName[i], document.getElementById("firstName").value);
localStorage[firstName[i]] = document.getElementById("firstName").value;
localStorage.setItem(lastName[i], document.getElementById("lastName").value);
localStorage[lastName[i]] = document.getElementById("lastName").value;
localStorage.setItem(email[i], document.getElementById("email").value);
localStorage[email[i]] = document.getElementById("email").value;
localStorage.setItem(password[i], document.getElementById("password").value);
localStorage[password[i]] = document.getElementById("password").value;
alert(localstorage[firstName]);
}
else
alert("Your browser does not support Local Storage");
}
您知道您可以只存储JSON字符串,然后稍后解析它吗
function storeUser() {
return $.ajax({
type: "GET",
url: "studio.json",
dataType: "text"
});
}
if ( ! localStorage.getItem('user') ) {
storeUser().done(function(json) {
user = JSON.parse( json );
localStorage.setItem('user', json);
});
}else{
user = JSON.parse( localStorage.getItem('user') );
}
但是您必须等待异步调用再次完成
MDN还有一个用于本地存储的功能,因此它也适用于不支持的浏览器。您需要执行一项称为“调试”的操作。重写
错误处理程序
以获取jQuery传递给它的参数,然后使用console.log打印它们,或者中断它并在调试器中检查它们。以下是错误的签名:
类型:函数(jqXHR jqXHR、字符串textStatus、字符串ERRORSHORN)
请求失败时要调用的函数。这个
函数接收三个参数:jqXHR(在jquery1.4.x中,
XMLHttpRequest)对象,一个描述
如果发生异常,则为可选的异常对象。可能的
第二个参数的值(除null外)为“超时”、“错误”,
“中止”和“解析错误”。当HTTP错误发生时,会抛出错误
接收HTTP状态的文本部分,例如“未找到”
或“内部服务器错误”
你为什么问同一个问题多次?(删除),哦,我意识到它甚至没有进入本地存储。它在进入函数之前崩溃。我不得不在多台电脑上测试我不认为这是同一个问题。一次是关于解析json的,这次是关于jquery调用的。@Steve:不过,让代码正常工作还是一样的问题。对不起,我以为问题出在localstorage,而不是json文件。谢谢你的反馈。我试过那个剧本,我不知道它是否有效。是否可以在函数return$.ajax部分添加警报?如果代码对您有效,则无法回答。如果你使用的是像chrome这样的浏览器,你可以打开控制台,在“资源”选项卡中,你可以检查本地存储,删除数据等,当你调试类似的东西时!谢谢,我认为它应该可以工作,但我得到一个错误XMLHttpRequest无法加载文件位置。访问控制允许不允许原点为null-Origin@Young-kyuQHan-这意味着你违反了javascripts,除非启用了JSONP(不是常规的JSON)或CORS,否则你不能使用javascript访问外部网站上的内容。我已经尝试过了,在多台计算机上尝试后,我让它开始工作。非常感谢。这似乎比我想象的要复杂。所以我必须用类型:function(jqXHR,jqXHR,String textStatus,String errorshown)替换error:function(){alert(“error”)}吗?关键是error函数有三个参数。在error函数的第一行放置一个断点,当断点停在那里时,检查
参数的值。或者,将错误函数替换为error:function(jqXHR,textStatus,errorhorn){console.log(jqXHR,textStatus,errorhorn);}
并查看控制台上打印的内容。
function storeUser() {
return $.ajax({
type: "GET",
url: "studio.json",
dataType: "text"
});
}
if ( ! localStorage.getItem('user') ) {
storeUser().done(function(json) {
user = JSON.parse( json );
localStorage.setItem('user', json);
});
}else{
user = JSON.parse( localStorage.getItem('user') );
}