Permintaan maaf untuk pertanyaan ini jika sesuatu di luar sana mencakup ini. Saya mencari dan menemukan banyak posting yang relevan yang memungkinkan saya untuk sampai ke titik ini.

Saya memiliki cuplikan formulir dengan 1 kotak input dan tombol dan div untuk pesan status:

<div>
    <div>
        <div>
            <input id="discount_code"name="discount_code" placeholder="  Enter discount code."></input>
        </div>
        <div>
            <a class="btn btn-xs btn-primary" id="btn-validate">Validate</a>
        </div>
    </div>
    <div id="status_msg" style="border: 1px solid black"></div>
</div>

Kemudian saya memiliki bit javascript berikut:

  1. Bit yang dipicu berdasarkan klik:

    $('#btn-validate').on('click', function(e) { e.preventDefault(); validasiKode(11); // "11" adalah variabel ID yang disediakan php });

  2. JavaScript dengan panggilan ajax:

    function validateCode(eventID) {
    var codeValue = $("#discount_code").val();
    if (FieldIsEmpty(codeValue)) { // outside function that exists/works fine
        $('#status_msg').html('Enter a discount code.').fadeIn(500);
        $('#status_msg').fadeOut(2500);
        //bootbox.alert("Please enter discount code to validate.");     
    } else {
        $.ajax({
            type: 'POST',
            cache: false,
            async: true,
            url: '/include/discount_validation.php',
            dataType: 'json',
            data: {
                event_id: eventID,
                discount_code: codeValue
            },
            beforeSend: function() {
                $('#status_msg').html('');
                $('#status_msg').fadeIn(0);
            },
            success: function(data) {
                $('#status_msg').html(data);
                $('#status_msg').fadeIn(0);
                //bootbox.alert(data);
            },
            error: function(data) {
                $('#status_msg').html(data);
                $('#status_msg').fadeIn(0);
                //bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code));
            }
        });
    }};
    

Dan saya memiliki file PHP yang, cukup untuk dikatakan, berfungsi dan menghasilkan output json berikut berdasarkan input:

            // do php database things...
header('Content-Type: application/json');

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => "$message"));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => "$message"));
}

Di atas, saya memiliki bootbox.alert baris yang dikomentari tetapi ketika mereka aktif, kotak muncul dan pesannya seperti yang saya harapkan.

Dan terakhir, kondisi pertama yang terpicu jika kotak input kosong, keduanya memicu peringatan (bila tidak dikomentari) DAN mengubah teks #status_msg.

Saya menempatkan perbatasan untuk memverifikasi visibilitas dan #status_msg terlihat tetapi tidak disetel saat berhasil atau kesalahan menyala.

1
Phil 2 Januari 2017, 09:35

3 jawaban

Jawaban Terbaik

Atur data Anda seperti ini di dalam ajax().

success: function(data) {
            var result = eval(data);
            $('#status_msg').html(result.message);
            $('#status_msg').fadeIn(0);
            //bootbox.alert(data);
        },
        error: function(data) {
            var result = eval(data);
            $('#status_msg').html(result.message);
            $('#status_msg').fadeIn(0);
            //bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code));
        }

DAN

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => $message));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => $message));
}
-1
Hikmat Sijapati 2 Januari 2017, 10:27

Periksa kodenya dulu, buang : " dari kode php variabel $message

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => $message));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => $message));
}

Kemudian gunakan respons pada fungsi font end success :

success: function(data) {

            $('#status_msg').html(data.message);
            $('#status_msg').fadeIn(0);

        },
0
Swarna Sekhar Dhar 2 Januari 2017, 08:16

Pertama periksa apakah Anda mendapatkan objek dalam respons di add sukses

alert(JSON.stringify(data));

Jika itu menunjukkan objek maka Anda baik untuk pergi lagi periksa file php tempat Anda membuat objek.

Jika objek diterima dalam keberhasilan ajax maka Anda perlu mengurai objek json menggunakan jQuery. parseJSON

Misalnya:

response = jQuery.parseJSON(data);

Sekarang Anda memiliki objek javascript dengan nama response.

Sekarang gunakan

response['status'] atau response['message'] dalam keberhasilan ajax.

0
Amar Singh 2 Januari 2017, 06:53