AJAX从JSON树获取

我刚刚开始使用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。

最简单的答案 – 检索整个对象(无论如何必须),并使用jsonpath获得所需的结构

更长的答案 – 检索整个对象,并自己遍历以获得所需的对象

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

解析JSON后,将其传递给回调函数 – 然后您可以根据需要操作该数组。

你可能想要一些自定义代码:

 $.getJSON(myURL, function(data) { /* data is an array of objects */ for (var i=0, j=data.length; i 

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

您可以在2个事物中的一个,在客户端循环数组,或动态地在每次调用时生成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