JSON解析错误:意外的标识符"参数"


Delete function not working Error like this JSON Parse error: Unexpected identifier "Param"

这是angular代码。我有这样的删除函数代码。当运行它时,我有这样的错误:

JSON解析错误:意外标识符"Param"

$scope.delete = function(cart_ID, index) {
var params = $.param({"cart_ID":cart_ID});
console.log(cart_ID);
 $http({
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        url: 'http://localhost/test1/shopCartProductDelete.php?cart_ID'+ cart_ID, 
        method: "GET",
        data: params

}).success(function(data){
$scope.data.splice(index, 1);

 });

shopCartProductDelete.phpt

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json;charset=UTF-8");
$con = mysqli_connect("localhost","root","","look4com_lk");
if(isset($_GET['cart_ID'])){
$cart_ID = $_GET['cart_ID'];
$res = "DELETE FROM l4wlk_cart WHERE cart_ID='".$cart_ID."'";
mysqli_query($con, $res) or mysqli_error($con);
}else{
die("Param value not set up"); 
}

您在jQuery AJAX请求中缺少= (可能不相关,但您最好检查$_GET['cart_ID']实际上是通过data 发送到您的PHP脚本):

url: 'http://localhost/test1/shopCartProductDelete.php?cart_ID'+ cart_ID
应:

url: 'http://localhost/test1/shopCartProductDelete.php?cart_ID='+ cart_ID

现在如果你想驾驭它作为json,你需要发送application/json,而不是text/plain:

echo json_encode(['error' => true, 'message' => 'Param not set']); 

这意味着您正在访问PHP中的else分支。因此响应是Param value not set up, jQuery尝试将其解析为JSON。因为响应不是有效的JSON,所以它告诉您第一个标识符(Param)是意外的。

您需要确定为什么isset($_GET['cart_ID'])false并修复它,并可能改进错误处理(返回JSON有效负载或更改响应的MIME类型)