PHP中json_encode返回的值无法被前端识别
echojson_encode(array("msg"=>"ok"));前端也有得到,但是前端ajax就是跳到error,error提示2004parsererror前端...
echo json_encode(array("msg"=>"ok"));
前端也有得到,但是前端ajax就是跳到error,error提示200 4 parsererror
前端:
jQuery.ajax({
url: "php/register.php",
type: "post",
timeout: 2000,
data: { "username": username,"model": 1},
dataType: "json",
beforeSend: function(){
},
success: function(date){
alert(date.msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete: function(XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
});
后端:
echo json_encode(array('msg'=>'ok','type'=>'email','regcode'=>$regcode)); 展开
前端也有得到,但是前端ajax就是跳到error,error提示200 4 parsererror
前端:
jQuery.ajax({
url: "php/register.php",
type: "post",
timeout: 2000,
data: { "username": username,"model": 1},
dataType: "json",
beforeSend: function(){
},
success: function(date){
alert(date.msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete: function(XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
});
后端:
echo json_encode(array('msg'=>'ok','type'=>'email','regcode'=>$regcode)); 展开
5个回答
展开全部
你可以尝试两个办法:
1- 前端把dataType: 'json'改成 dataType: 'jsonp'
2- 后端在 echo 前使用命令 header('Content-type:text/json') 可能还额外需要 header('char-set:utf-8');
1- 前端把dataType: 'json'改成 dataType: 'jsonp'
2- 后端在 echo 前使用命令 header('Content-type:text/json') 可能还额外需要 header('char-set:utf-8');
更多追问追答
追问
header('Content-type:text/json;charset=utf-8');
echo json_encode(array('msg'=>'ok','type'=>'email','regcode'=>$regcode));这个试过,没效果;
data: { "username": username,"model": 1},
dataType: "jsonp",
也没有效果
追答
你可以贴出完整的后端代码吗?$regcode的值是什么?
哦...写错了
header('Content-type: application/json');
如果写text/json的话直接访问这个页面都打不开了,呵呵。试试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ajax访问是否跨域,试试jsonp
追问
不是同一个目录下面可以叫“跨域”吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回值数据类型不对,jquery那里要求比较严谨。
更多追问追答
追答
也许你可以试试jsonp方式,返回数据将是字符串。
后端:
$callbackname = $_POST['callback'];
echo $callbackname."(".json_encode(array('msg'=>'ok','type'=>'email','regcode'=>$regcode)).")";
看有没有效果。
补充:
有些时候ajax返回的数据是字符串格式而不是json格式,那我们需要判断其数据类型,如果是字符串,则parseJSON()处理一下。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的complete 里面的 this 是做什么的?
追问
这个 没什么样,删了,对问题没影响
追答
function ccc(){
$.ajax({
url: "php/register.php",
type: "post",
timeout: 15000,
data: { 'username': 'admin','model': 1},
dataType: "json",
success: function(d){
alert(d.msg);
},
error: function(xhr, s, error) {
alert(xhr.status);
alert(xhr.readyState);
alert(s);
},
complete: function(xhr,s) {
this; // 调用本次AJAX请求时传递的options参数
}
});
}
click
你看我的例子,怎么样,可以运行没
你上面的那个错误提示,表示你后台PHP代码里,少 括号 或者 少标点符号吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询