• 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排查错误花了三个小时时间。无语了
    */
    
  • 相关阅读:
    机器学习-识别手写数字0-9
    tensorflow深度学习-mnist数据集读入-初试
    TensorFlow 2.0 最基础的线性回归
    cuDNN 环境变量-默认安装路径
    INT104-lab2
    [蓝桥杯][历届试题][dfs][割点]危险系数
    2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。
    2021-03-17:手写代码:单链表插入排序。
    2021-03-16:手写代码:单链表归并排序。
    2021-03-15:手写代码:单链表选择排序。
  • 原文地址:https://www.cnblogs.com/hnbiao/p/7207158.html
Copyright © 2020-2023  润新知