jQuery ajax ответ получен как Javascript Объект вместо JSON - PullRequest
0 голосов
/ 25 февраля 2020

У меня возникли проблемы с этим.

В файле. 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 Объект

Если я разблокирую функцию JSON .Parse в insert_dept_crew, я получаю ошибку. Когда я проверяю с моим PHP файлом, возвращаемое значение было solid JSON следующим образом.

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

, пожалуйста, помогите мне с этим несоответствием.

1 Ответ

0 голосов
/ 25 февраля 2020

Понял ... Я понял это. Благодаря @ freedomn-n и @RoryMcCrossan я заметил, что я использовал dataType за секунду jQuery, потому что я думал, что это для отправки данных. Но jQuery ожидал, какой тип данных будет возвращен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...