0

我刚开始使用 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 中的第二个参数,但这似乎只是返回整个树。

谢谢!

4

3 回答 3

2

简短的回答 - 您不能直接使用 AJAX 来执行此操作。jQuery 可以提取部分 HTML 和 XML 文档,但不能提取 JSON。

最简单的答案 - 检索整个对象(无论如何你必须)并使用jsonpath来获取你想要的结构

更长的答案 - 检索整个对象,并自己遍历它以获得您想要的对象

最佳答案 - 将电子邮件地址作为生成 json 的任何脚本的参数,并让服务器只返回您想要的数据。

于 2013-09-24T15:26:31.947 回答
1

解析 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] */
        };
    };
});

http://api.jquery.com/jQuery.getJSON/

于 2013-09-24T15:26:43.520 回答
1

您可以两件事中的一件,在客户端循环遍历数组,或者在每次调用时动态生成 users.json(这假设后端服务器语言如 php)

使用动态生成的 json 文件

JS

$.ajax({
   url:"/users.json.php",
   data:{
      useremail:"someusersemail@here.com"
   }
   type:"POST",
   dataType:"json",
   success:function(userdata){
      //users data will be in userdata
      console.log(userdata.email);
   }
})

服务器脚本(假设是 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
         }
      }
   }
})
于 2013-09-24T15:30:04.277 回答