can*_*ino 85 javascript string ajax post xmlhttprequest
我想从JavaScript发送一些变量和一个带POST方法的字符串.我从数据库中获取字符串,然后将其发送到PHP页面.我正在使用XMLHttpRequest对象.问题是字符串包含字符"&"几次,PHP中的$ _POST数组看起来像多个键.我尝试用"/"替换"&"和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);
Run Code Online (Sandbox Code Playgroud)
字符串是:
<span class="style2">"Busola"</span>
Run Code Online (Sandbox Code Playgroud)
Fré*_*idi 159
您可以使用encodeURIComponent().
它将逃避URL中不能逐字出现的所有字符:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
Run Code Online (Sandbox Code Playgroud)
在此示例中,&符号&
将由转义序列替换,该转义序列%26
在URL中有效.
Wol*_*ram 15
您可能想使用encodeURIComponent().
encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B
Run Code Online (Sandbox Code Playgroud)
你需要url逃脱&符号.使用:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
Run Code Online (Sandbox Code Playgroud)
正如Wolfram所指出的那样,通过encodeURIComponent可以很好地处理它(以及所有其他特殊字符).
Ramil Amr 的答案仅适用于 & 字符。如果你有一些其他特殊字符,你应该使用 PHPhtmlspecialchars()
和JS 的encodeURIComponent()
.
你可以写:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
Run Code Online (Sandbox Code Playgroud)
在服务器端:
htmlspecialchars($_POST['wysiwyg']);
Run Code Online (Sandbox Code Playgroud)
这将确保 AJAX 将按预期传递数据,并且 PHP(如果您将数据插入数据库)将确保数据按预期工作。