繁体   English   中英

未捕获到的SyntaxError:JSON中位置0处的意外令牌

[英]Uncaught SyntaxError: Unexpected token in JSON at position 0

在一些帮助下,我设法制作了一个在将用户添加到数据库之前验证并确认用户密码的表单。 我遇到了一些问题,因为未发送用户数据,并给我以下错误:

未捕获到的SyntaxError:JSON中位置0处的意外令牌
在JSON.parse()
在Object.success(confirm3.php:29)
在我(jquery.min.js:2)
在A处(jquery.min.js:4)
在XMLHttpRequest。 (jquery.min.js:4)

错误

在Object.success(confirm3.php:29)

指的是这一行

var data = JSON && JSON.parse(response) || $.parseJSON(response);

POST变量

$UserNm=$_POST["UserNm"];
$UserId=$_POST["UserId"];
$UserPwd=$_POST["UserPwd"];

为了清楚$ReturnMessage ,应返回的数据是$ReturnMessage ,该数据从存储过程中检索。 $ReturnMessage将显示成功和失败操作的操作状态。

$ReturnMessage的示例:

“用户标识已存在。(011代码)。”
“添加了用户ID MINT20。”

使用了POST方法: if(isset($_POST['Submit'])) {

$ ReturnMessage:

 if(isset($ReturnStatus) && $ReturnStatus==1) {
 $ReturnMessage=odbc_result($stmt,'ReturnMessage');
 }
 }

 $ReturnMessage = utf8_encode ($ReturnMessage);
 echo json_encode($ReturnMessage);
 }

剧本:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script type="text/javascript">
$(function() {
  $("#myForm").on("submit", function(e) {
    e.preventDefault(); 
    var password = $("#UserPwd").val();
    var confirmPassword = $("#ConfirmPassword").val();
    console.log(password,confirmPassword)  
    if ($.trim(password) === password && 
      password !== "" && 
      password === confirmPassword) { 
      $.ajax({
        url: "confirm3.php",
        method: "POST",
        data: { Submit: "true" },
        success: function(response) {
          var data = JSON && JSON.parse(response) || $.parseJSON(response);
          alert(data);
        }
        });
        } else {
          alert("Please Enter Password Correctly");
        }
      });
});
<script>

我有点困惑。 请指导我。 谢谢。

首先,jQuery可以为您自动解码JSON(它将尽力猜测)。 手动进行操作只会使您的代码更加冗长且容易出错。 但是,您没有给出任何提示。 您共享的代码中没有任何有关您打算使用jQuery的线索。

您可以按时间顺序执行的所有阶段:

  1. 从Web服务器报告数据类型。 如果您碰巧正在使用Apache:

     <Files "confirm3.php"> ForceType application/json </Files> 
  2. 从PHP报告数据类型:

     header('Content-Type: application/json'); 
  3. 告诉jQuery您需要JSON:

     url: "confirm3.php", method: "POST", dataType: "json", data: { Submit: "true" }, success: function(response) { console.log(data); // Already decoded (don't use alert to debug!) } 

您当然可以忽略几乎任何步骤,但不能全部。

其次,如果收到JSON解析错误,则首先需要检查响应是否为有效JSON。 最直观的查看方法是使用浏览器开发人员工具,尤其是“网络”窗格

您是否在php中设置了内容类型?

header('Content-Type: application/json');

另外,您无需在引号中加上“ true”,当json进入您的php脚本时,一旦运行json_decode,php就会将其识别为布尔值。

在我的情况下使用它,因为有一些空字节,所以我弄清楚了,它解决了我的问题。

var data3 = data.substring(data.lastIndexOf("{")+1,data.lastIndexOf("}"));
      count = $.parseJSON("{"+data3+"}");
      alert( count.firstname ); // firstname is the key so you can use anything to test it.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM