<?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; //[email protected] //******************** 配置信息 ******************************** $smtpserver = "smtp.163.com";//SMTP服务器 $smtpserverport =25;//SMTP服务器端口 $smtpusermail = "[email protected]";//SMTP服务器的用户邮箱 $smtpemailto = "[email protected]";//发送给谁 $smtpuser = "[email protected]";//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排查错误花了三个小时时间。无语了 */
时间: 2024-11-03 01:18:15