Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Permintaan tak segerak ke pelayan PHP tanpa mengembalikan data? (Lampiran penyelesaiannya)

Permintaan tak segerak ke pelayan PHP tanpa mengembalikan data? (Lampiran penyelesaiannya)

藏色散人
藏色散人ke hadapan
2022-01-23 09:27:264833semak imbas

baru -baru ini menemui masalah dengan ajax permintaan asynchronous. $.post$.get$.ajax
Selepas banyak ujian, kami mendapati:

– penyemak imbas berbeza, meminta nama domain berbeza - tiada sekatan: tiada percubaan diperlukan – penyemak imbas berbeza, meminta yang sama nama domain - Tidak menyekat: mengembalikan berbeza
– penyemak imbas yang sama, meminta nama domain yang berbeza - Tidak menyekat:
mengembalikan berbeza session_id() – penyemak imbas yang sama, meminta nama domain yang sama - Menyekat:
mengembalikan yang sama session_id
session_id()Mendapati masalah:

1 Tutup2
KunciXDEBUG3 Kosongkan penimbal output
SESSION
1 Tutup

XDEBUG ialah penyahpepijatan masa nyata. Apabila menyahpepijat, ia akan kekal untuk memastikan urutan berfungsi untuk mengelakkan pencemaran data.
Kaedah ujian biasa ialah membuka penyemak imbas lain dan melawati tapak apabila menggunakan XDEBUG untuk menyahpepijat Tapak ini tidak boleh diakses pada masa ini. FPM
Ini mempunyai kesan ketara pada respons selari, iaitu walaupun bahagian hadapan menghantar berbilang permintaan, ia dikawal oleh XDEBUG dan hanya boleh membalas satu demi satu.

Selain itu, kerana

bergantung pada XDEBUG, anda perlu mematikan penguncian sesi walaupun anda menggunakan
(lihat di bawah). XDEBUGmasih akan dibuka secara automatik. SESSIONsession_write_close()XDEBUG2

Kunci

Gunakan SESSION untuk menutup kunci tulis , yang sesuai untuk kes di mana
disimpan sebagai session_write_close() . Tidak diperlukan jika SESSION disimpan dalam SESSION. FileSESSIONRedis3 Kosongkan penimbal output

Menggunakan mungkin tidak menutup kunci serta-merta, jadi tambah:
sebelum kaedah ini. Biarkan session_write_close() berkuat kuasa serta-merta. SESSIONob_end_flush()session_write_close()4 Contoh

Terdapat contoh berikut Apabila butang [Serah] diklik, bahagian hadapan akan menghantar dua permintaan ke pelayan bahagian belakang. Salah satunya adalah permintaan, yang diminta setiap 1 saat.
Salah satunya ialah permintaan
, yang dihantar sekali pada permulaan dan kemudian menunggu penyelesaian yang sepadan. get
Lihat kod HTMLpost

kod php

<form>
<input type="submit" value="提交" />
</form>

<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>

<script type="text/javascript">
    $(&#39;form&#39;).on(&#39;submit&#39;, function(e) {
        e.preventDefault();

        // 每隔一秒请求一次服务器
        var id = setInterval(function() {
            $.get(
                &#39;save.php?action=get&#39;,
                {},
                function(data) {
                    console.log(data);
                },
                &#39;json&#39;
            );
        }, 1000);

        $.post(
            &#39;save.php?action=post&#39;,
            {},
            function(data) {
                console.log(data);
                // 停止定时循环
                clearInterval(id);
            },
            &#39;json&#39;
        );
    });
</script>

Pembelajaran yang disyorkan: "
cf44e1b56b3cc8a68161c85bcd1685b9 $_SESSION['time']]);
    exit();}if ($action == 'get') {
    echo json_encode([session_id() => $_SESSION['time']]);
    exit();}
Tutorial video PHP

"

Atas ialah kandungan terperinci Permintaan tak segerak ke pelayan PHP tanpa mengembalikan data? (Lampiran penyelesaiannya). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam