簡體   English   中英

“ 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:JSON數據的第1行第1列出現意外字符

但是,如果我將POST更改為GET,則可以看到傳遞的變量,但仍然會遇到相同的錯誤。

有什么想法我做錯了嗎?

您的PHP文件未輸出有效的JSON響應,這就是JSON.parse引發錯誤的原因。 您的PHP代碼中有很多錯誤,並且這些錯誤已包含在輸出中,從而使JSON響應無效。

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

這不是有效的PHP代碼。 PHP沒有console.log() 它具有echo PS您使用. 連接PHP中的字符串,而不是+.

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

這些鍵。 末尾沒有空格。 他們應該是:

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

最后, $_POST["myArray"]是一個array 您不能將其連接為字符串。 嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM