如何正确解析 JSON 文件以通过 JQuery Ajax 方法使用它?

Posted

技术标签:

【中文标题】如何正确解析 JSON 文件以通过 JQuery Ajax 方法使用它?【英文标题】:How to properly parse a JSON file to use it through the JQuery Ajax method? 【发布时间】:2019-10-18 20:54:31 【问题描述】:

我创建了以下 JSON 数组

[
  
    "nome": "Aldo Maria",
    "indirizzo": "Viale Europa 1",
    "telefono": "3397889034"
  ,
  
    "nome": "Maria13",
    "indirizzo": "Viale Europa 1",
    "telefono": "3397889034"
  
]

我有一个 javascript 文件,我想在其中 循环该数组的两个元素。 我想通过使用 Jquery ajax 方法 解释here 来做到这一点。

换句话说,我想我应该使用以下语法:

$(selector).getJSON(url,data,success(data,status,xhr))

我正在尝试应用它并将以下 sn-p 写入我的 javascrpt 文件,我想在其中循环 JSON 数组的元素以显示一个表格,用户在该表格中获取有关名称、地址的数据和其他人的电话号码):

函数 validateTelefono() 设置超时(函数()

   var data = JSON.parse(data);

   $.getJSON("I wrote the patthern of the JSON file 
              here", 
   function()
      for (var i=0;  i < data.length; i++)
        $("#tbody").append("<tr>");
        $("#tbody").append("<td>" + data.nome[i] + "</td>");
        $("#tbody").append("<td>" + data.indirizzo[i] + "</td>");
        $("#tbody").append("<td>" + data.telefono[i] + "</td>");
        $("#tbody").append("</tr>");                        
                
            );

为了完整起见,这是整个代码:

function validateTelefono() 


    console.log("function validateTelefono has been activated");
    if ($("#inlineFormInputTelefono").val() == "") 
        $("#errorLogTelefono").show();
     else 
        $("#errorLogTelefono").hide();

        $("#cercaTelefono").prop("disabled", true);

        $("#tbody").empty();


        setTimeout(function () 

               var data = JSON.parse(data);

            $.getJSON(
                "D:\Unknown\array.json",

                //success
                function()
                    console.log(data);

                    for (var i=0;    i < data.length; i++)       
                        $("#tbody").append("<tr>");
                        $("#tbody").append("<td>" + data.nome[i] + "</td>");
                        $("#tbody").append("<td>" + data.indirizzo[i] + "</td>");
                        $("#tbody").append("<td>" + data.telefono[i] + "</td>");
                        $("#tbody").append("</tr>");
                    
                
            );

            $("#tabella").show();

            $("#cercaTelefono").prop("disabled", false);
        , 1000);
    

在浏览器中打开页面时,我得到一个:

Uncaught SyntaxError: 位置 0 处 JSON 中的意外标记 u 在 JSON.parse()

引用如下代码行:

            var data = JSON.parse(data);

我想错误是括号内的数据

我应该写什么而不是“数据”?还是有其他原因导致 Jquery 方法不起作用?

问题已解决 - - - - - - >

1)我删除了下面这行代码,上面的错误信息消失了(感谢您的建议):

var data = JSON.parse(data);

在我这样做之后,我得到了另一个错误:

这是由 getJSON 方法的 url 参数中的 url 语法引起的:整个路径 ("D:\Unknown\array.json")识别它不在我的javascript文件所在的文件夹“内部”(“未知”);相反,它指的是外部文件夹(“D”)。 换句话说,我是这样编辑网址的:

"array.json"

"array.jason" 位于它所使用的 javascript 文件 ("Unknown") 的同一文件夹中。所以整个sn-p的正确语法如下:

$.getJSON(

                "array.json",

                function(data)

                    for (var i=0; i < data.length; i++)                        

                        $("#tbody").append("<tr>");
                        $("#tbody").append("<td>" + data[i].nome + "</td>");
                        $("#tbody").append("<td>" + data[i].indirizzo + "</td>");
                        $("#tbody").append("<td>" + data[i].telefono + "</td>");
                        $("#tbody").append("</tr>");
                    
                
            );

【问题讨论】:

注释掉var data = JSON.parse(data);这一行——它什么也不做。 谢谢@skobaljic。我做到了,现在我没有收到那个错误,但是我应该如何引用我的 json 文件呢? 您在请求 json 文件时可能会遇到错误(u 是undefined 的第一个字母)。 【参考方案1】:

无需解析为 JSON,因为它已经是 JSON 格式。但是不要忘记请求返回一个数组,所以(注意 data.key[i] 更改为 data[i].key):

 $.getJSON("URL-TO-JSON", 
       function(data)
          for (var i=0;  i < data.length; i++)
            $("#tbody").append("<tr>");
            $("#tbody").append("<td>" + data[i].nome + "</td>");
            $("#tbody").append("<td>" + data[i].indirizzo + "</td>");
            $("#tbody").append("<td>" + data[i].telefono + "</td>");
            $("#tbody").append("</tr>");                        
          
    );

【讨论】:

【参考方案2】:

错误Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse ()是json文件的路径引起的。您必须将其写为\\,因为\ 将启动转义序列。所以你目前正试图逃避Unknown中的U

【讨论】:

以上是关于如何正确解析 JSON 文件以通过 JQuery Ajax 方法使用它?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Javascript 函数以 JSON 格式返回 highchart 图形数据源,并通过 Selenium 和 C# 正确格式化

从通过 jQuery/jQueryMobile 中的 AJAX 调用检索到的 JSON 数据正确设置变量

如何正确解析 JSON 表以用于 Value 函数?

解析 json 文件以获取要插入 bigquery 的正确列

如何以正确的方式在 IOS SWIFT 3 中解析 Google 距离矩阵 API JSON

jQuery 数据表解析 json 不正确