Quero enviar algumas variáveis e uma string com o POST
método do JavaScript.
Pego a string do banco de dados e a envio para uma página PHP. Estou usando um XMLHttpRequest
objeto.
O problema é que a string contém o caractere &
algumas vezes, e o $_POST
array em PHP o vê como várias chaves.
Tentei substituir o &
por \&
pela replace()
função, mas parece não fazer nada.
Alguém pode ajudar?
O código javascript e a string têm a seguinte aparência:
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);
O String é:
<span class="style2">"Busola"</span>
javascript
ajax
string
post
xmlhttprequest
candino
fonte
fonte
Você pode querer usar encodeURIComponent () .
fonte
Você precisa fazer o escape de url do "e" comercial. Usar:
Como Wolfram aponta, isso é bem tratado (junto com todos os outros caracteres especiais) por encodeURIComponent.
fonte
A resposta de Ramil Amr funciona apenas para o personagem &. Se você tiver alguns outros caracteres especiais, você deve usar PHP
htmlspecialchars()
e JSencodeURIComponent()
.Você pode escrever:
E no lado do servidor:
Isso garantirá que AJAX passará os dados conforme o esperado e que o PHP (no caso de você inserir os dados em um banco de dados) garantirá que os dados funcionem conforme o esperado.
fonte
A forma preferida é usar uma biblioteca JavaScript como jQuery e definir sua opção de dados como um objeto, então deixe jQuery fazer a codificação, assim:
Se você não pode usar jQuery (que é praticamente o padrão atualmente), use encodeURIComponent .
fonte
Você pode passar seus argumentos usando esta função encodeURIComponent para que não precise se preocupar em passar nenhum caractere especial.
OU
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
fonte
Você pode codificar sua string usando a codificação Base64 no lado do JavaScript e então decodificá-la no lado do servidor com PHP (?).
JavaScript ( Docu )
PHP ( Docu ):
fonte
Isso truncará caracteres especiais.
fonte