Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取json文件时出错_Javascript_Jquery_Html_Json - Fatal编程技术网

Javascript 获取json文件时出错

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

我有一个javascript文件,用于获取json文件,如果成功,它将执行一个函数,如果失败,它将显示一个警告窗口,显示“error”,但尽管语法看起来正确,但我每次都会收到一个带有错误的警告窗口

这是两个文件

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') );
}