簡體   English   中英

jQuery ajax 響應作為 Javascript 對象而不是 JSON 接收

[英]jQuery ajax response received as Javascript Object instead of JSON

我遇到了這個問題。

在 file.js 中編寫以下代碼。

function fleet_vssl_list(callbackFunc){
    func_name = "Get_Vssl_Fleet";
    let responseObject = null;
    $.ajax({
        url: 'get_rank_vssl_fleet.php',
        type: 'POST',
        data: `func_name=${func_name}`,
        success: function(responseObject){
            console.log(responseObject);
            responseObject = JSON.parse(responseObject);
            console.log(responseObject);
            vssl_fleet = responseObject.vssl_fleet;
        }
    });
}

至於我寫的PHP文件如下。

function vssl_list(){
    $conn = StartConn();
    $qry = ("select vssl_name from vessel");
    $qry_exec = mysqli_query($conn, $qry);
    if (mysqli_num_rows($qry_exec) > 0){
        $results = mysqli_fetch_all($qry_exec, MYSQLI_ASSOC);
        foreach ($results as $my_row){
            $vssl[] = $my_row["vssl_name"];
        }
        StopConn($conn);
        echo json_encode(
            array(
                'vssl' => $vssl
            )
        );
    }
    else{
        $results = "No Vessel Data Found !!!";
        StopConn($conn);
        echo json_encode(
            array(
                'vssl' => $results
            )
        );
    }
}

在控制台中,我收到如下圖所示。 上一個如果在 JSON.parse 之前,下一個在 JSON.parse 之后

在同一個 .js 文件中,我編寫了另一個函數,如下所示。

function insert_dept_crew(){
    let responseObject = null;
    $.ajax({
        url: 'insert_update_delete_obd_data.php',
        type: 'POST',
        dataType: 'JSON',
        data: data_string,
        success: function(responseObject){
            //responseObject = JSON.parse(responseObject);
            console.log(responseObject);
        },
    });
}

至於PHP,我寫如下只是為了測試結果。

function insert_new(){
    $func_name = "Insert_Departure_Crew";
    $cdc = 12345;
    $rank = "MST";
    $rank_sd = "MST";
    $vssl_id = 1;
    $fleet_id = 1;
    $dept_dt = "20200225";
    echo json_encode(
        array(
            'func_name' => $func_name,
            'cdc' => $cdc,
            'rank' => $rank,
            'rank_sd' => $rank_sd,
            'vssl_id' => $vssl_id,
            'fleet_id' => $fleet_id,
            'dept_dt' => $dept_dt
        )
    );
}

我已經阻止了代碼行 JSON.parse,我在控制台中收到如下。 我可以將其視為 Javascript 對象

如果我在 insert_dept_crew 函數中解除對 JSON.Parse 的阻止,就會出錯。 當我檢查我的 PHP 文件時,返回的是可靠的 JSON,如下所示。

{"func_name":"Insert_Departure_Crew","cdc":12345,"rank":"MST","rank_sd":"MST","vssl_id":1,"fleet_id":1,"dept_dt":"20200225"}

請幫我解決這個不一致的問題。

明白了……我想通了。 感謝@freedomn-n 和@RoryMcCrossan,我注意到我在第二個jQuery 中使用了dataType,因為我認為它是用於發送數據的。 但是 jQuery 期望返回什么類型的數據。

暫無
暫無

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

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