JS請求報錯:Unexpected token T in JSON at position 0

<?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排查錯誤花了三個小時時間。無語了
*/
相關文章
相關標籤/搜索