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