";SyntaxError:JSON.parse:意外字符";将多个变量从AJAX传递到PHP时出错


"SyntaxError: JSON.parse: unexpected character" Error when passing multiple variables from AJAX to PHP

我使用AJAX将变量从表单传递到PHP页面,以处理数据库中的数据。

一旦用户点击一个按钮,就会触发以下JavaScript:

$(document).ready(function() {
    $("#myForm").submit(function(event) {
        /* validate the fields */
        var firstDate= "11/10/2014"
        var secondDate = "10/10/2014"
        var myString = "some Text";
        var myArray = ["name1", "name2", "name3", "123-123-33gf"];
        processIT(firstDate, secondDate, muString, myArray);
    });/* end of submit */
});
function processIT(firstDate, secondDate, muString, myArray) {
    var response = ""; 
    $(function () {
        $.ajax({
            url: 'api.php',           // the script to call to get data
            type: "POST", 
            data: {
                firstDate: firstDate, 
                secondDate : secondDate , 
                myString : myString , 
                myArray : myArray , 
            },                 // you can insert url argumnets here to pass to api.php
            dataType: 'json',         // return data format
            success: function(data) { //
                alert(data);
             },
             error: function (jqXHR, textStatus, errorThrown){
                 console.log(textStatus, errorThrown);
             },
        });
    });
    return response;
}

api.php页面有以下

<?php 

    if ( isset($_POST["firstDate"]) && !empty($_POST["firstDate"])){
        $response .= "<p>firstDate= " . $_POST["firstDate"] . "</p>"; 
    }
    else $response .= " 1 ";
    if ( isset($_POST["secondDate"]) && !empty($_POST["secondDate"])){
        $response .= "<p>secondDate = " . $_POST["secondDate"] . "</p>";
    }
    else $response .= " 2 ";
    if ( isset($_POST["myString"]) && !empty($_POST["myString"])){
        $response .= "<p>myString = " . $_POST["myString"] . "</p>";
    }
    else $response .= " 3 ";
    if ( isset($_POST["myArray"]) && !empty($_POST["myArray"])){
        $response .= "<p>myArray = " . $_POST["myArray"] . "</p>";
    }
    else $response .= " 4 ";
echo json_encode($response);
?>

但当我点击按钮时,我会得到以下错误:

SyntaxError:JSON.parse:第1行第1列出现意外字符JSON数据

但是,如果我将POST更改为GET,我可以看到传递的变量,但仍然会得到相同的错误。

你知道我做错了什么吗?

您的PHP文件没有输出有效的JSON响应,这就是JSON.parse抛出错误的原因。PHP代码中有许多错误,这些错误被包含在输出中,从而产生无效的JSON响应。

console.log("firstDate" + $_POST["firstDate"]);

这不是有效的PHP代码。PHP没有console.log()。它具有echo。附言:在PHP中使用.连接字符串,而不是+.

$_POST["secondDate "]
$_POST["myString "]
$_POST["myArray "]

这些钥匙。最后没有空位了。它们应该是:

$_POST["secondDate"]
$_POST["myString"]
$_POST["myArray"]

最后,$_POST["myArray"]是一个数组。不能将其连接到字符串。试试这个:

$response .= "<p>myArray = ".implode(', ', $_POST["myArray"])."</p>";