如何正确解析 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 文件以获取要插入 bigquery 的正确列