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
您可以在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