Я хочу отправить несколько переменных и строку с POST
методом из JavaScript.
Я получаю строку из базы данных и затем отправляю ее на страницу PHP. Я использую XMLHttpRequest
объект.
Проблема в том, что строка содержит символ &
несколько раз, а $_POST
массив в PHP воспринимает его как несколько ключей.
Я пытался замены &
с \&
с replace()
функцией, но это , кажется, не делать ничего.
Кто-нибудь может помочь?
Код javascript и строка выглядят так:
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);
Строка:
<span class="style2">"Busola"</span>
javascript
ajax
string
post
xmlhttprequest
Candino
источник
источник
Возможно, вы захотите использовать encodeURIComponent () .
encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B
источник
Вам нужно экранировать URL-адрес амперсанда. Использование:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
Как указывает Вольфрам, с этим (вместе со всеми другими специальными символами) прекрасно справляется encodeURIComponent.
источник
Ответ Рамиля Амра работает только для символа &. Если у вас есть другие специальные символы, вам следует использовать PHP
htmlspecialchars()
и JSencodeURIComponent()
.Ты можешь написать:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
А на стороне сервера:
htmlspecialchars($_POST['wysiwyg']);
Это гарантирует, что AJAX будет передавать данные, как ожидалось, и что PHP (в случае, если вы вставляете данные в базу данных) будет гарантировать, что данные работают должным образом.
источник
Вы можете передавать свои аргументы, используя эту функцию encodeURIComponent, поэтому вам не нужно беспокоиться о передаче каких-либо специальных символов.
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
ИЛИ ЖЕ
var someValue = 'Dolce & Gabbana'; data: "param1=getAccNos¶m2="+encodeURIComponent(someValue)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
источник
Вы можете закодировать свою строку, используя кодировку Base64 на стороне JavaScript, а затем декодировать ее на стороне сервера с помощью PHP (?).
JavaScript ( Документ )
var wysiwyg_clean = window.btoa( wysiwyg );
PHP ( Документ ):
var wysiwyg = base64_decode( $_POST['wysiwyg'] );
источник
Предпочтительный способ - использовать библиотеку JavaScript, такую как jQuery, и установить параметр данных в качестве объекта, а затем позволить jQuery выполнить кодирование, например:
$.ajax({ type: "POST", url: "/link.json", data: { value: poststr }, error: function(){ alert('some error occured'); } });
Если вы не можете использовать jQuery (который в наши дни в значительной степени является стандартом), используйте encodeURIComponent .
источник
encodeURIComponent(Your text here);
Это приведет к усечению специальных символов.
источник