Javascript 从JSON树获取AJAX
我刚开始使用AJAX,尝试使用JQuery的$.getJSON函数(或任何相关函数,如$.load()、$.AJAX()等)。我有一个JSON文件,其结构如下:Javascript 从JSON树获取AJAX,javascript,jquery,ajax,json,tree,Javascript,Jquery,Ajax,Json,Tree,我刚开始使用AJAX,尝试使用JQuery的$.getJSON函数(或任何相关函数,如$.load()、$.AJAX()等)。我有一个JSON文件,其结构如下: [ { "id": 1, "email": "user@domain.com", "password": "password" }, { "id": 2, "email": "one@two.com", "passwo
[
{
"id": 1,
"email": "user@domain.com",
"password": "password"
},
{
"id": 2,
"email": "one@two.com",
"password": "password"
}
]
对于具有特定电子邮件的用户,如何在这个JSON文件(我们称之为users.JSON)上调用GET?我原以为它将是$.getJSON中的第二个参数,但这似乎只是返回整个树
谢谢 简短回答-您不能直接使用AJAX来实现这一点。jQuery可以提取HTML和XML文档的一部分,但不能提取JSON 最简单的答案-检索整个对象(无论如何,您必须这样做),并使用它来获取所需的结构 更长的回答-检索整个对象,并亲自遍历它以获得所需的对象
最佳答案-将电子邮件地址作为生成json的任何脚本的参数,并让服务器只返回您想要的数据。简短答案-您无法直接使用AJAX实现这一点。jQuery可以提取HTML和XML文档的一部分,但不能提取JSON 最简单的答案-检索整个对象(无论如何,您必须这样做),并使用它来获取所需的结构 更长的回答-检索整个对象,并亲自遍历它以获得所需的对象
最佳答案-将电子邮件地址作为生成json的脚本的参数,让服务器只返回您想要的数据。解析json后,您将其传递给回调函数-然后您可以根据需要操作该数组 您可能需要一些自定义代码:
$.getJSON(myURL, function(data) {
/* data is an array of objects */
for (var i=0, j=data.length; i<j; i++) {
if (data[i].email === some_value) {
/* do something with data[i] */
};
};
});
$.getJSON(myURL,函数(数据){
/*数据是一个对象数组*/
对于(var i=0,j=data.length;i解析JSON后,将其传递给回调函数,然后可以根据需要操作该数组
您可能需要一些自定义代码:
$.getJSON(myURL, function(data) {
/* data is an array of objects */
for (var i=0, j=data.length; i<j; i++) {
if (data[i].email === some_value) {
/* do something with data[i] */
};
};
});
$.getJSON(myURL,函数(数据){
/*数据是一个对象数组*/
对于(var i=0,j=data.length;i您可以选择两种方式中的一种,在客户端循环数组,或者在每次调用时动态生成users.json(这假设使用像php这样的后端服务器语言)
使用动态生成的json文件
$.ajax({
url:"/users.json",
dataType:"json",
success:function(data){
for(i=0;i<data.length;i++) {
var user = data[i];
if(user.email == "someemail@gmail.com") {
//do what you need to with user data
}
}
}
})
JS
服务器脚本(假设为PHP):users.json.PHP
$email = $_POST['useremail'];
//get user data based on email
...
echo json_encode($userdata);
die;
生成的json文件应该最终输出如下内容
{"id": 1,"email": "user@domain.com","password": "password"}
循环方法:通过客户端的用户数组循环
$.ajax({
url:"/users.json",
dataType:"json",
success:function(data){
for(i=0;i<data.length;i++) {
var user = data[i];
if(user.email == "someemail@gmail.com") {
//do what you need to with user data
}
}
}
})
$.ajax({
url:“/users.json”,
数据类型:“json”,
成功:功能(数据){
对于(i=0;i您可以选择两种方式中的一种,在客户端循环数组,或者在每次调用时动态生成users.json(这假设使用像php这样的后端服务器语言)
使用动态生成的json文件
$.ajax({
url:"/users.json",
dataType:"json",
success:function(data){
for(i=0;i<data.length;i++) {
var user = data[i];
if(user.email == "someemail@gmail.com") {
//do what you need to with user data
}
}
}
})
JS
服务器脚本(假设为PHP):users.json.PHP
$email = $_POST['useremail'];
//get user data based on email
...
echo json_encode($userdata);
die;
生成的json文件应该最终输出如下内容
{"id": 1,"email": "user@domain.com","password": "password"}
循环方法:通过客户端的用户数组循环
$.ajax({
url:"/users.json",
dataType:"json",
success:function(data){
for(i=0;i<data.length;i++) {
var user = data[i];
if(user.email == "someemail@gmail.com") {
//do what you need to with user data
}
}
}
})
$.ajax({
url:“/users.json”,
数据类型:“json”,
成功:功能(数据){
对于(i=0;iyou需要在javascript中解析客户端的变量,或者使其成为users。json是动态生成的,并且只输出特定用户的正确json。您在json请求中以清晰可见的方式显示用户密码?您到底为什么要这样做?您需要通过客户端上的变量进行解析json是动态生成的,只输出特定用户的正确json。你在json请求中清晰地显示用户密码?你到底为什么要这样做?你是什么意思,没有内置方式?总是有Array.filter
@Alnitak哦,显然我不是这个意思。。。。(根据MDN,不适用于IE8及以下版本,所以在这种情况下它“不总是”可用。)对于IE8,总是有垫片(或垃圾箱…)你是什么意思,没有内置方式?总是有数组。filter
@Alnitak嗯,显然我不是说一个…(根据MDN,不适用于IE8及以下版本,所以它不是“总是”对于IE8,总是有垫片(或垃圾箱…)必须同意“最佳答案”,尽管如果OP不控制JSON,那么它将不是一个选项。目前使用的是最简单的答案,因为我正在尽可能多地使用JS。而尝试jsonpath和JSONSELECT必须同意“最佳答案”,虽然如果OP不控制JSON,那么它将不是一个选项。目前使用的是最简单的答案,因为我正在尽可能多地使用JS。并尝试使用jsonpath和JSONselect