Data permintaan posting Angularjs $http dan respons dengan kesalahan yang tidak ditentukan

Saya ingin mendapatkan nilai spesifik dari sisi server. Oleh karena itu saya menggunakan $http untuk meneruskan variabel dari front-end (javascript Angularjs) ke backend (php). Setelah sisi server (php) dapatkan nilai dari front-end. Ini akan menjalankan query sql untuk mendapatkan data dari mysql dan mengembalikan data ke front-end. Namun, di konsol front-end saya, ini menunjukkan kesalahan yang tidak ditentukan. Berikut ini adalah kode saya:

Javascript ujung depan

$http({
    method: "post",
    url: "http://localhost/php/UpdateLastLogin.php",
    data: {
        user_name: user_name,
        CurrentTimestamp: CurrentTimestamp
        },
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function(response) {
    console.log(response);
}).error(function(response) {
    console.log(response);
});

PHP bagian belakang

<?php
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Credentials: true");
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
    header('P3P: CP="CAO PSA OUR"'); 
    header("Content-Type: application/json; charset=utf-8");


    $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);
    @$CurrentTimestamp = $request->CurrentTimestamp;
    @$user_name = $request->user_name;

    $servername = "localhost";
    $username = "jack";
    $password = "1234";
    $dbname = "daikinchat";

    $CurrentTimestamp = '"' . $CurrentTimestamp . '"';
    //$user_name = '"' . $user_name . '"';
    $user_name = "Lisa Wong";

    $conn = new mysqli($servername, $username, $password, $dbname);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

    $query = "SELECT last_login_timestamp FROM user_directory WHERE username = '$user_name'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_row($result);

    echo $row[0];

?>

person Chan Yoong Hon    schedule 10.10.2016    source sumber
comment
garis mana yang muncul?   -  person Sajeetharan    schedule 10.10.2016
comment
@Sajeetharan error(fungsi(respons) { console.log(response);}   -  person Chan Yoong Hon    schedule 10.10.2016
comment
coba tipe konten application/json dalam permintaan $http Anda   -  person Divyesh Savaliya    schedule 10.10.2016


Jawaban (1)


Masalahnya mungkin ada pada panggilan $http Anda, panggilan $http saya terlihat seperti:

$http({
            method: 'post',
            url:'http://localhost/php/UpdateLastLogin.php',
            data: {...},
            config: 'Content-Type: application/json;'
        }).then(function (response) {
            console.log(response);
        }, function (response) {
            console.log(response);
        });

Jika saya tidak salah, Anda dapat menggunakan keduanya, header atau konfigurasi, tetapi sepertinya Anda tidak menggunakan header atribut dengan benar, dokumentasinya mengatakan:

  • headers – {function([headerName])} – Fungsi pengambil header.
  • config – {Object} – Objek konfigurasi yang digunakan untuk menghasilkan permintaan.

Jadi coba ubah 'Jenis Konten' Anda menjadi 'aplikasi/json', karena itulah yang Anda kirimkan ke badan permintaan http Anda. Jika tidak berhasil, ubah header menjadi config untuk menguji.

Jika tidak berhasil juga, saya akan menggunakan alat apa pun seperti, 'tukang pos' untuk memeriksa API, dan memastikan bahwa itu berfungsi, dan mencoba men-debug kode PHP (saya tidak dapat membantu Anda dengan bagian ini)

person Alberto Martinez    schedule 10.10.2016
comment
Saya pikir masalah utamanya adalah saya memposting objek ke backend tetapi di php saya echo adalah string, bukan objek. Oleh karena itu, muncul SyntaxError: Unexpected token a di JSON pada posisi 0. Bisakah respons saya menerima String? - person Chan Yoong Hon; 10.10.2016
comment
Anda dapat menggunakan JSON.stringfy(json_object) untuk mendapatkan string, dan JSON.parse(string_object) untuk mendapatkan json lagi dari string tersebut. Jadi, pastikan objek Anda dilemparkan ke json atau string sebelum menggunakannya... - person Alberto Martinez; 10.10.2016
comment
Saya baru menyadarinya, ubah panggilan $http Anda, gunakan yang ini: ` $http({ metode: post, url: localhost /php/UpdateLastLogin.php, data: { user_name: user_name, CurrentTimestamp: CurrentTimestamp }, header: { 'Content-Type': 'application/json' } }.then(function (response) { console.log (respon); }, fungsi (respon) { console.log(respon); }); ` - person Alberto Martinez; 10.10.2016