Saya ingin mengirim beberapa variabel dan string dengan POST
metode dari JavaScript.
Saya mendapatkan string dari database, dan kemudian mengirimkannya ke halaman PHP. Saya menggunakan sebuah XMLHttpRequest
objek.
Masalahnya adalah string berisi karakter &
beberapa kali, dan $_POST
array dalam PHP melihatnya seperti beberapa kunci.
Saya mencoba mengganti &
dengan \&
dengan replace()
fungsi, tetapi sepertinya tidak melakukan apa-apa.
Adakah yang bisa membantu?
Kode javascript dan stringnya terlihat seperti ini:
var wysiwyg = dijit.byId("wysiwyg").get("value");
var wysiwyg_clean = wysiwyg.replace('&','\&');
var poststr = "act=save";
poststr+="&titlu="+frm.value.titlu;
poststr+="§iune="+frm.value.sectiune;
poststr+="&wysiwyg="+wysiwyg_clean;
poststr+="&id_text="+frm.value.id_text;
xmlhttp.open("POST","lista_ajax.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(poststr);
Stringnya adalah:
<span class="style2">"Busola"</span>
sumber
Anda mungkin ingin menggunakan encodeURIComponent () .
encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B
sumber
Anda perlu meng-escape url dari ampersand. Menggunakan:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
Seperti yang ditunjukkan Wolfram, ini ditangani dengan baik (bersama dengan semua karakter khusus lainnya) oleh encodeURIComponent.
sumber
Jawaban Ramil Amr hanya berlaku untuk karakter &. Jika Anda memiliki beberapa karakter khusus lainnya, Anda harus menggunakan PHP
htmlspecialchars()
dan JSencodeURIComponent()
.Kamu bisa menulis:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
Dan di sisi server:
htmlspecialchars($_POST['wysiwyg']);
Ini akan memastikan bahwa AJAX akan meneruskan data seperti yang diharapkan, dan PHP (jika Anda memasukkan data ke database) akan memastikan data berfungsi seperti yang diharapkan.
sumber
Anda dapat meneruskan argumen Anda menggunakan fungsi encodeURIComponent ini sehingga Anda tidak perlu khawatir melewatkan karakter khusus apa pun.
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
ATAU
var someValue = 'Dolce & Gabbana'; data: "param1=getAccNos¶m2="+encodeURIComponent(someValue)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
sumber
Anda dapat menyandikan string Anda menggunakan pengkodean Base64 di sisi JavaScript dan kemudian mendekodekannya di sisi server dengan PHP (?).
JavaScript ( Docu )
var wysiwyg_clean = window.btoa( wysiwyg );
PHP ( Docu ):
var wysiwyg = base64_decode( $_POST['wysiwyg'] );
sumber
Cara yang disukai adalah menggunakan pustaka JavaScript seperti jQuery dan mengatur opsi data Anda sebagai objek, lalu biarkan jQuery melakukan pengkodean, seperti ini:
$.ajax({ type: "POST", url: "/link.json", data: { value: poststr }, error: function(){ alert('some error occured'); } });
Jika Anda tidak dapat menggunakan jQuery (yang merupakan standar saat ini), gunakan encodeURIComponent .
sumber
encodeURIComponent(Your text here);
Ini akan memotong karakter khusus.
sumber