簡體   English   中英

我正在嘗試從用戶輸入中獲取一些數據到 JSON 文件中。我收到此消息

[英]I am trying to get some data from user input into a JSON file.I get this message

我收到這個 JSON 錯誤,告訴我我有一個語法錯誤,我不知道我在哪里犯了錯誤。 如果有幫助,我已經提供了代碼。

 var isNode= typeof module !=="undefined"
var clientData;
var auxClientData;
var aux=[];
var k=0;
if (!isNode)
{
var storedObjects=JSON.parse(localStorage.getItem("objects"));
console.log(storedObjects);




var ok=false;
buttonConfirm.addEventListener("click",function(){
    for(var i=0;i<inputs.length;i++)
    {
        var inputShow=inputs[i].value;
        if (inputShow!=null && inputShow!="")
                {
                    aux[k++]=inputShow; 
               }
               else
               {
                   alert("ALL THE FIELDS MUST BE COMPLETED! ");
                   ok=true;
                   break;
               }
    }
     clientData={fullName:aux[0],emailAddress:aux[1],phoneNumber:aux[2]};
    //localStorage.setItem("clientData",JSON.stringify(clientData));
   // console.log(clientData);
    if (ok==true){
        alert("THANK YOU FOR YOUR PURCHASE! CHECK YOUR E-MAIL")
    }
    console.log(JSON.parse(JSON.stringify(clientData)));
})

}
else
{
    var clientData={"fullName":aux[0],"emailAddress":aux[1],"phoneNumber":aux[2]};
    var fs=require("fs");
     auxClientData=JSON.stringify(clientData);

    fs.writeFile("clients.json",auxClientData,finished)
    function finished()
    {
        console.log("ok");
        var ok=fs.readFileSync("clients.json");
        var test=JSON.parse(ok);
        console.log(test);

    }

}

這是錯誤:

SyntaxError: JSON.parse () 處的 JSON 輸入意外結束

我剛剛意識到問題是什么:

 var clientData;
 auxClientData=JSON.stringify(clientData);

您的 else 語句中的 clientData 永遠不會設置,它將是未定義的。 所以你需要在 else 中重新定義它。 aux 將需要可用,並且在您的程序范圍內進一步擴展才能使其正常工作。 您可以通過在 else 語句中手動將 clientData 設置為其他內容來確認我的假設。

else
{
    var fs=require("fs");
    clientData={"fullName":aux[0],"emailAddress":aux[1],"phoneNumber":aux[2]};
     auxClientData=JSON.stringify(clientData);
    fs.writeFile("clients.json",auxClientData,finished)
    function finished()
    {
        console.log("ok");
    }
    var ok=fs.readFileSync("clients.json");
    var test=JSON.parse(ok);
    console.log(test);

}

------------------------------您的代碼。

var isNode = typeof module !== "undefined"
var clientData;
var auxClientData;
var aux = [];
var k = 0;

if (!isNode) {

    // INSIDE THE IF 
    var storedObjects = JSON.parse(localStorage.getItem("objects"));
    console.log(storedObjects);
    var ok = false;
    //add a listener inside the if statement for the click. 
    buttonConfirm.addEventListener("click", function () {
         // when it is clicked.
        for (var i = 0; i < inputs.length; i++) {

            var inputShow = inputs[i].value;
            if (inputShow != null && inputShow != "") {
                //POPULATE THE AUX ARRAY adding one to k each time?
                // seems weird, why is this not aux[i] = inputShow;
                aux[k++] = inputShow;
            }
            else {
                alert("ALL THE FIELDS MUST BE COMPLETED! ");
                ok = true;
                break;
            }
        }
        clientData = { fullName: aux[0], emailAddress: aux[1], phoneNumber: aux[2] };
        //localStorage.setItem("clientData",JSON.stringify(clientData));
        // console.log(clientData);
        if (ok == true) {
            alert("THANK YOU FOR YOUR PURCHASE! CHECK YOUR E-MAIL")
        }
        console.log(JSON.parse(JSON.stringify(clientData)));
    })

}
else {

    //inside the else. 
    //aux is an empty array here. so aux[0] = undefined, aux[1] = undefined etc.
    //i.e. the button hasn't been pressed to populate it at this point.
    var clientData = { "fullName": aux[0], "emailAddress": aux[1], "phoneNumber": aux[2] };
    var fs = require("fs");
    auxClientData = JSON.stringify(clientData);

    fs.writeFile("clients.json", auxClientData, finished)
    function finished() {
        console.log("ok");
        var ok = fs.readFileSync("clients.json");
        var test = JSON.parse(ok);
        console.log(test);

    }

}

暫無
暫無

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

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