JS请求报错:Unexpected token T in JSON at position 0

时间:2023-03-08 18:49:02
<?php
/*
最近做一个ajax validate表单验证提交的代码,在ajax提交的时候
JS请求报错:Unexpected token T in JSON at position 0 描述: 这是一个请求,参数的地方报这要的错,请问是为什么?
百思不得其解啊
解决方案1: 去看下json的格式要求,JSON.parse()方法对json串要求很严格
解决方案2: http://www.bejson.com/
用这个网址测试试试json格式是不是有误,换行,单引号什么的会导致报错,格式要求很严格 以下会导致报错:
JSON字符串里的非数字型键值没有双引号
JSON中存在t这样的制表符,看起来和空格一样,但是就是因为它的存在校验不通过。去掉就能过了。
编辑器有bom头也会造成
解决方案3: 某个地方用了JSON.parse,但是传入的参数不是一个合格的json字符串。 以上介绍了“ (javascript)JS请求报错:Unexpected token T in JSON at position 0”的问题解答,希望对有需要的网友有所帮助。 */ /**
*js ajax发送代码
*/ $.validator.setDefaults({
submitHandler: function() {
// alert("提交事件!");return false;
var query=new Object();
query.user_name=$('#user_name').val();
query.sex=$('#sex').val();
query.country=$('#country').val();
query.email=$('#email').val();
query.mobile=$('#mobile').val();
query.weixin=$('#weixin').val();
query.address=$('#address').val();
query.messages=$('#messages').val();
var url="/controller/apply.php";
$.ajax({
url:url,
type:"POST",
data:query,
dataType:"json",
success:function(res){
if(res.status==1){
alert(res.msg);
window.location.replace("http://www.fxbob.com/a/zhongwen/hezuohuoban/20170620/21.html");
}else{
alert(res.msg);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest);
// console.log(errorThrown);
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete: function(XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
});
return false;
}
}); /**
*php的ajax接收代码Apply.php如下:
*/ <?php
// header("Content-type: text/html; charset=utf-8");
define('DEDEMOB', 'Y');
require_once(dirname(__FILE__)."/../include/common.inc.php");
//加载邮件类
require_once(dirname(__FILE__)."/../include/Smtp.class.php");
if($_POST){
$data=$_POST;
$str=<<<EOT
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>Untitled Document</title>
</head>
<body>
<p>全名:{$data['user_name']}</p>
<p>性别:{$data['sex']}</p>
<p>国家:{$data['country']}</p>
<p>地址:{$data['address']}</p>
<p>邮箱:{$data['email']}</p>
<p>手机:{$data['mobile']}</p>
<p>微信:{$data['weixin']}</p>
<p>留言:{$data['messages']}</p>
</body>
</html>
EOT;
//ib@fxbob.com
//******************** 配置信息 ********************************
$smtpserver = "smtp.163.com";//SMTP服务器
$smtpserverport =25;//SMTP服务器端口
$smtpusermail = "hmb9981541@163.com";//SMTP服务器的用户邮箱
$smtpemailto = "ib@fxbob.com";//发送给谁
$smtpuser = "hmb9981541@163.com";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
$smtppass = "rainliu213";//SMTP服务器的用户密码
$mailtitle = "申请经纪人";//邮件主题
$mailcontent = $str;//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
//************************ 配置信息 ****************************
$smtp = new Smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
// $smtp->debug = true;//是否显示发送的调试信息
$state = $smtp->sendmail($smtpemailto, $smtpusermail, $mailtitle, $mailcontent, $mailtype);
if($state){
$res['status']=1;
$res['msg']="提交成功,请等待申核";
}else{
$res['status']=0;
$res['msg']="网络忙,提交失败,请稍候再尝试";
}
echo json_encode($res);exit;
} /**
*最后在网上查了好多这方面的错误,排查到是这个apply.php文件带bom头导致json解析错误导致引起了,一个小小json排查错误花了三个小时时间。无语了
*/