提取Json响应
Extract Json response
我正在尝试提取从php文件发送的jquery中的Json响应。这是.js代码:
$.ajax({
url: 'index.php?page=register', //This is the current doc
type: 'POST',
datatype: 'json',
data: {'userCheck': username},
success: function(data){
// Check if username is available or not
},
error: function(){
alert('Much wrong, such sad');
}
});
这是来自php文件的响应:
if($sth->fetchColumn()!=0){
//$response = array("taken");
$response = array("username"=>"taken");
echo json_encode($response);
//echo '{"username':'taken"}';
}else{
//$response = array("available");
$response = array("username"=>"available");
echo json_encode($response);
//echo '{"username":"available"}';
}
我已经在两个文件中尝试了我能想到的所有组合,但似乎都不起作用。这是对数据库中用户名的简单检查。如果我控制台记录我从响应中获得的数据,我会得到这个:
{"username":"available"}<!DOCTYPE html>
// The rest of the page html
所以信息就在那里,但我该如何访问它?我试过互联网上的几种语法,但到目前为止运气不佳。我似乎记得json响应只能包含有效的json,那么问题是html吗?由于我的应用程序的结构,我认为我无法避免这种情况,所以希望可以用我目前的结构访问json。
在Ajax中
编辑:
更改
datatype:"json",
不考虑参数名称的情况,t必须是t
dataType:"json",
现在请重试
$.ajax
({
url: 'index.php?page=register', //This is the current doc
type: 'POST',
dataType: 'json',
data: {'userCheck': username},
success: function(data)
{
// Check if username is available or not
switch(data.username)
{
case "available":
// do you want
break;
case "taken":
// do you want
break;
}
},
error: function()
{
alert('Much wrong, such sad');
}
});
在PHP中
简单地说,不要忘记退出;避免在json响应中包含html页面!这是在破坏json输出的}"…之后的代码并使其无法被javascript读取(更糟糕的是,它只会破坏您的javascript!)
echo json_encode(["username"=> ($sth->fetchColumn()!=0) ? "taken":"available"]);
exit;
当您响应AJAX调用时,应该只返回JSON响应,而不是页面的HTML。添加:
exit();
在这段代码之后,这样您就不会在JSON之后显示HTML了。
在JS代码中,使用if (data.username == 'available')
来判断用户名是否可用。
你代码中的另一个问题是你在这里有一个拼写错误:
datatype: 'json',
它应该是dataType
,并带有大写的T
。
你也可以放:
header("Content-type: application/json");
在回显脚本中的JSON之前,jQuery将自动解析响应。
您还可以在jQuery ajax调用beforeSend函数中设置请求头,如下所示
beforeSend: function (xhr) {
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
xhr.setRequestHeader('Accept', 'application/json');
}
因此,您严格地将数据类型声明为json
相关文章:
- http请求使用html而不是json进行响应
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 使用来自不同异步函数的响应创建一个json对象
- 无法访问响应 JSON 对象
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- 无法从响应 JSON 中删除 html 标记
- 当响应 JSON 对象数据计数为零时,AJAX 成功回调函数重定向到错误回调
- 拆分 AJAX 响应 (JSON)
- jquery ajax 响应中缺少响应 JSON
- AJAX返回200成功,但未能解析响应JSON
- 向声音云响应json添加一个变量
- Node.js请求-Can't获取REST响应(JSON)的属性
- 如何使用javascript在for循环中获取响应json数据
- 下拉列表中未设置 AJAX 响应 JSON 数据
- Fetch api,为什么我必须在响应json()上使用它,试图让承诺有意义
- 如何使用ajax响应JSON数据
- 响应.json() 上的“意外输出结束”错误