Javascript 从JSON树获取AJAX

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

我刚开始使用AJAX,尝试使用JQuery的$.getJSON函数(或任何相关函数,如$.load()、$.AJAX()等)。我有一个JSON文件,其结构如下:

[
    {
        "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