<?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排查錯誤花了三個小時時間。無語了
*/