Apa yang saya rindukan?

1.php:

<button id = "testtext">Show</button>
<script src="jquery-3.1.1.min.js"></script>
<script src="js.js"></script>

Js.js:

$("#testtext").bind("click", previewNewShortnameFunc);
function previewNewShortnameFunc() {
    var lalalatext = "lalala";
    var lalalaint = 100;
    console.log("sent: " + lalalatext + " and " + lalalaint);
    $.ajax ({
        url: "testprint4.php",
        type: "POST",
        data : {str: lalalatext, int: lalalaint},
        success: function(data) {
            window.open("testprint4.php");
        }
    });
}

Testprint4.php

<?php
$str = $_POST['str'];
$int = $_POST['int'];
echo $str;
echo $int;
?>

Saya melihat halaman kosong alih-alih lalala100. Apa yang saya lakukan salah?

0
nhpmi 16 Agustus 2017, 18:36

2 jawaban

Jawaban Terbaik

Kode ini mencakup dua permintaan HTTP terpisah. Anda pertama kali melakukan permintaan Ajax untuk mendapatkan respons itu sebelum mengarahkan pengguna untuk meminta skrip yang sama tanpa parameter apa pun, sehingga menghasilkan halaman kosong.

$.ajax ({
    url: "testprint4.php",
    type: "POST",
    data : {str: lalalatext, int: lalalaint},
    success: function(data) {

    }
});

Bagian ini membuat browser meminta skrip dengan data yang disediakan sebagai POST. Bila respons telah diterima, respons tersebut tersedia di data callback yang ditautkan dengan properti success. Permintaan selesai kemudian.

Alih-alih memproses respons itu dengan konten yang Anda harapkan, Anda menggunakan

window.open("testprint4.php");

Untuk membuka jendela browser baru untuk meminta skrip yang sama lagi, kali ini menggunakan permintaan GET tanpa argumen apa pun. Oleh karena itu Anda akan melihat halaman kosong.

0
Thomas Urban 16 Agustus 2017, 15:43

Ini tidak akan berhasil. jQuery Ajax melakukan panggilan ini secara tidak sinkron, jadi, window.open akan meminta testprint4.php tanpa data yang diteruskan dalam panggilan ajax. Untuk melihat hasil yang diinginkan, ganti window.open('testprin4.php') menjadi console.log(data).

0
Samuel Martins 16 Agustus 2017, 15:44