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));
展开
 我来答
百度网友a19d193
2015-07-06 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1445万
展开全部
你可以尝试两个办法:
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的话直接访问这个页面都打不开了,呵呵。试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lx514014
2015-07-06 · TA获得超过262个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:95.8万
展开全部
ajax访问是否跨域,试试jsonp
追问
不是同一个目录下面可以叫“跨域”吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jozh_china
2015-07-06 · TA获得超过141个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:199万
展开全部
返回值数据类型不对,jquery那里要求比较严谨。
更多追问追答
追问

我也在怀疑 json_encode这里的问题,但是到处都写了json_encode 就是json的封装,而且我在浏览器可以看到

追答
也许你可以试试jsonp方式,返回数据将是字符串。
后端:
$callbackname = $_POST['callback'];
echo $callbackname."(".json_encode(array('msg'=>'ok','type'=>'email','regcode'=>$regcode)).")";

看有没有效果。

补充:
有些时候ajax返回的数据是字符串格式而不是json格式,那我们需要判断其数据类型,如果是字符串,则parseJSON()处理一下。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a70d281
2015-07-06
知道答主
回答量:26
采纳率:0%
帮助的人:14.5万
展开全部
贴代码上来啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逝水青清
2015-07-06 · TA获得超过488个赞
知道小有建树答主
回答量:279
采纳率:50%
帮助的人:53.1万
展开全部
你的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代码里,少 括号 或者 少标点符号吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式