Saya mencoba membaca parameter permintaan posting dari HTML saya. Saya dapat membaca parameter permintaan get menggunakan kode berikut di JavaScript.
$wnd.location.search
Tapi itu tidak berfungsi untuk permintaan posting. Adakah yang bisa memberi tahu saya cara membaca nilai parameter permintaan posting di HTML saya menggunakan JavaScript?
javascript
html
DonX
sumber
sumber
Sepotong kecil PHP untuk membuat server mengisi variabel JavaScript cepat dan mudah:
var my_javascript_variable = <?php echo json_encode($_POST['my_post'] ?? null) ?>;
Kemudian akses saja variabel JavaScript dengan cara biasa.
Perhatikan bahwa tidak ada jaminan data atau jenis data tertentu akan diposting kecuali Anda mencentang - semua kolom masukan adalah saran, bukan jaminan.
sumber
JavaScript adalah bahasa skrip sisi klien, yang berarti semua kode dijalankan di mesin pengguna web. Variabel POST, di sisi lain, pergi ke server dan berada di sana. Browser tidak menyediakan variabel tersebut ke lingkungan JavaScript, dan pengembang pun tidak boleh mengharapkan variabel tersebut secara ajaib ada di sana.
Karena browser melarang JavaScript mengakses data POST, sangat tidak mungkin untuk membaca variabel POST tanpa aktor luar seperti PHP yang menggemakan nilai POST ke dalam variabel skrip atau ekstensi / addon yang menangkap nilai POST saat transit. Variabel GET tersedia melalui solusi karena berada di URL yang dapat diurai oleh mesin klien.
sumber
Gunakan sessionStorage!
$(function(){ $('form').submit{ document.sessionStorage["form-data"] = $('this').serialize(); document.location.href = 'another-page.html'; } });
Di another-page.html:
var formData = document.sessionStorage["form-data"];
Tautan referensi - https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
sumber
form.on('submit',function(){document.sessionStorage["form-data"] = $('this').serialize();window.location.href = 'another-page.html';})
samesite = None
danSecure
sehingga krom memungkinkan penggunaan itu.Dengan begitu Anda memiliki akses ke sana dari mana saja!
sumber
cloudianos.com
tidak akan mencapaiapi.cloudianos.com
JavaScript, karena keduanya tidak berbagi samalocalStorage
.Anda dapat membaca parameter permintaan posting dengan jQuery-PostCapture ( @ ssut / jQuery-PostCapture ).
Plugin PostCapture terdiri dari beberapa trik.
Saat Anda mengklik tombol kirim,
onsubmit
acara akan dikirim.Pada saat itu, PostCapture akan membuat serialisasi data formulir dan disimpan ke html5 localStorage (jika tersedia) atau penyimpanan cookie.
sumber
POST adalah apa yang dikirimkan browser dari klien (broswer Anda) ke server web. Data posting dikirim ke server melalui header http, dan hanya tersedia di ujung server atau di antara jalur (contoh: server proxy) dari klien (browser Anda) ke server web. Jadi tidak dapat ditangani dari skrip sisi klien seperti JavaScript. Anda perlu menanganinya melalui skrip sisi server seperti CGI, PHP, Java, dll. Jika Anda masih perlu menulis dalam JavaScript, Anda harus memiliki server web yang memahami dan menjalankan JavaScript di server Anda seperti Node.js
sumber
Jika Anda bekerja dengan Java / REST API, solusinya mudah. Di halaman JSP, Anda dapat melakukan hal berikut:
<% String action = request.getParameter("action"); String postData = request.getParameter("dataInput"); %> <script> var doAction = "<% out.print(action); %>"; var postData = "<% out.print(postData); %>"; window.alert(doAction + " " + postData); </script>
sumber
<script> <?php if($_POST) { // Check to make sure params have been sent via POST foreach($_POST as $field => $value) { // Go through each POST param and output as JavaScript variable $val = json_encode($value); // Escape value $vars .= "var $field = $val;\n"; } echo "<script>\n$vars</script>\n"; } ?> </script>
Atau gunakan untuk memasukkannya ke dalam kamus yang dapat diambil oleh suatu fungsi:
<script> <?php if($_POST) { $vars = array(); foreach($_POST as $field => $value) { array_push($vars,"$field:".json_encode($value)); // Push to $vars array so we can just implode() it, escape value } echo "<script>var post = {".implode(", ",$vars)."}</script>\n"; // Implode array, javascript will interpret as dictionary } ?> </script>
Kemudian di JavaScript:
var myText = post['text']; // Or use a function instead if you want to do stuff to it first function Post(variable) { // do stuff to variable before returning... var thisVar = post[variable]; return thisVar; }
Ini hanya sebuah contoh dan tidak boleh digunakan untuk setiap data sensitif seperti password, dll Metode POST ada karena suatu alasan; untuk mengirim data dengan aman ke backend, sehingga akan menggagalkan tujuan.
Tetapi jika Anda hanya membutuhkan sekumpulan data formulir non-sensitif untuk pergi ke halaman berikutnya tanpa
/page?blah=value&bleh=value&blahbleh=value
di url Anda, ini akan membuat url lebih bersih dan JavaScript Anda dapat segera berinteraksi dengan data POST Anda.sumber
Saya memiliki kode sederhana untuk membuatnya:
Di index.php Anda:
<input id="first_post_data" type="hidden" value="<?= $_POST['first_param']; ?>"/>
Di main.js Anda:
let my_first_post_param = $("#first_post_data").val();
Jadi ketika Anda akan memasukkan main.js di index.php (
<script type="text/javascript" src="./main.js"></script>
) Anda bisa mendapatkan nilai input tersembunyi Anda yang berisi data posting Anda.sumber
Anda dapat 'json_encode' untuk pertama kali menyandikan variabel posting Anda melalui PHP. Kemudian buat objek JS (larik) dari variabel posting yang dikodekan JSON. Kemudian gunakan loop JavaScript untuk memanipulasi variabel tersebut ... Seperti - dalam contoh di bawah ini - untuk mengisi formulir HTML:
<script> <?php $post_vars_json_encode = json_encode($this->input->post()); ?> // SET POST VALUES OBJECT/ARRAY var post_value_Arr = <?php echo $post_vars_json_encode; ?>;// creates a JS object with your post variables console.log(post_value_Arr); // POPULATE FIELDS BASED ON POST VALUES for(var key in post_value_Arr){// Loop post variables array if(document.getElementById(key)){// Field Exists console.log("found post_value_Arr key form field = "+key); document.getElementById(key).value = post_value_Arr[key]; } } </script>
sumber
Salah satu opsinya adalah menyetel cookie di PHP.
Misalnya: cookie bernama tidak valid dengan nilai
$invalid
kedaluwarsa dalam 1 hari:setcookie('invalid', $invalid, time() + 60 * 60 * 24);
Kemudian baca kembali di JS (menggunakan plugin JS Cookie ):
var invalid = Cookies.get('invalid'); if(invalid !== undefined) { Cookies.remove('invalid'); }
Anda sekarang dapat mengakses nilai dari
invalid
variabel di JavaScript.sumber
Itu tergantung dari apa yang Anda definisikan sebagai JavaScript. Saat ini kami memiliki JS di program sisi server seperti NodeJS. Ini adalah JavaScript yang sama persis dengan yang Anda kodekan di browser Anda, kecuali sebagai bahasa server. Jadi Anda dapat melakukan sesuatu seperti ini: ( Kode oleh Casey Chu: https://stackoverflow.com/a/4310087/5698805 )
var qs = require('querystring'); function (request, response) { if (request.method == 'POST') { var body = ''; request.on('data', function (data) { body += data; // Too much POST data, kill the connection! // 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB if (body.length > 1e6) request.connection.destroy(); }); request.on('end', function () { var post = qs.parse(body); // use post['blah'], etc. }); } }
Dan dari situ digunakan
post['key'] = newVal;
dll ...sumber
Variabel POST hanya tersedia untuk browser jika browser yang sama mengirimkannya terlebih dahulu. Jika formulir situs web lain dikirimkan melalui POST ke URL lain, browser tidak akan melihat data POST masuk.
SITUS A: memiliki formulir kirim ke URL eksternal (situs B) menggunakan POST SITUS B: akan menerima pengunjung tetapi hanya dengan variabel GET
sumber
function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } var formObj = document.getElementById("pageID"); formObj.response_order_id.value = getParameterByName("name");
sumber
$(function(){ $('form').sumbit{ $('this').serialize(); } });
Di jQuery, kode di atas akan memberi Anda string URL dengan parameter POST di URL. Bukan tidak mungkin untuk mengekstrak parameter POST.
Untuk menggunakan jQuery , Anda perlu menyertakan perpustakaan jQuery. Gunakan yang berikut untuk itu:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
sumber
Kita bisa mengumpulkan form params yang dikirimkan menggunakan POST dengan menggunakan konsep serialize .
Coba ini:
$('form').serialize();
Cukup lampirkan itu peringatan, ini akan menampilkan semua parameter termasuk tersembunyi.
sumber
<head><script>var xxx = ${params.xxx}</script></head>
Menggunakan ekspresi EL $ {param.xxx} in
<head>
untuk mendapatkan params dari metode posting, dan pastikan file js disertakan setelahnya<head>
sehingga Anda dapat menangani parameter seperti 'xxx' secara langsung di file js Anda.sumber