簡體   English   中英

在位置0的JSON中出現意外的標記u(但有時只是)

[英]Unexpected token u in JSON at position 0 (but only sometimes)

好的,所以這只是我的代碼的一部分,實際上按照預期的方式工作。

var jqxhr = $.getJSON( "main.json", function(data) {
    return data;
});

var json;
window.onload = function() {
    var jsonTxt = jqxhr.responseText;
    json = JSON.parse(jsonTxt);
    ....
}

但每10次嘗試左右我都會收到以下錯誤:

Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at window.onload (profile.js:8)

這真的很煩人,因為它會讓我的頁面空白。 我認為它與我試圖解析JSON錯誤有關 - 或者其他什么。 我真的不知道,我期待任何可以引導我解決問題的答案。 謝謝。

那個意外的“你”是字符串“undefined”的第一個字母。 這是因為你的兩個異步操作(即加載JSON並加載窗口)正在競爭完成,如果JSON加載速度不夠快, window.onload方法將嘗試解析未加載的JSON字符串然而。

解決方案是在onload甚至處理程序中移動JSON加載。 另外, getJSON的重點在於它已經將您的響應解析為JSON對象,因此不需要JSON.parse()

window.onload = function() {
    $.getJSON( "main.json", function(json) {
        // process the results here
    });
}

在調用JSON.parse()的位置插入try catch塊。

文本本身可能不是JSON。

例如...

我認為這是問題所在,因為如果響應文本未定義,則char'u'位於位置0.因此JSON.parse()正在使用字符串。 不是javascript-object-notation文本文件。

if(response !== undefined){
    try{
    // do parse
    }
    catch(errror){
        console.error("Not a JSON response")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM