首页 > 解决方案 > 作为 Javascript 对象而不是 JSON 接收的 jQuery ajax 响应

问题描述

我遇到了麻烦。

在 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"}

请帮助我解决这种不一致。

标签: javascriptphpjquery

解决方案


明白了……我想通了。感谢@freedomn-n 和@RoryMcCrossan,我注意到我在第二个jQuery 中使用了dataType,因为我认为它是用来发送数据的。但是 jQuery 期望返回什么类型的数据。


推荐阅读