Javascript 我怎样才能发送&&引用;(符号)字符通过AJAX?
我想用JavaScript中的Javascript 我怎样才能发送&&引用;(符号)字符通过AJAX?,javascript,ajax,string,post,xmlhttprequest,Javascript,Ajax,String,Post,Xmlhttprequest,我想用JavaScript中的POST方法发送几个变量和一个字符串 我从数据库中获取字符串,然后将其发送到PHP页面。我使用的是XMLHttpRequest对象 问题在于,字符串多次包含字符&,PHP中的$\u POST数组将其视为多个键 我试着用\&替换&和替换replace()函数,但它似乎没有任何作用 有人能帮忙吗 javascript代码和字符串如下所示: var wysiwyg = dijit.byId("wysiwyg").get("value"); var wysiwyg_clea
POST
方法发送几个变量和一个字符串
我从数据库中获取字符串,然后将其发送到PHP页面。我使用的是XMLHttpRequest
对象
问题在于,字符串多次包含字符&
,PHP中的$\u 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);
<span class="style2">"Busola"</span>
字符串是:
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>
“布索拉”
您可能需要使用
您可能想使用
你需要用url转义符号。使用:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
正如Wolfram指出的,encodeURIComponent很好地处理了这一点(以及所有其他特殊字符)。您需要url转义符号。使用:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
正如Wolfram所指出的,encodeURIComponent可以很好地处理(以及所有其他特殊字符)。您可以使用
它将转义URL中无法逐字出现的所有字符:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
在本例中,符号和字符&
将替换为转义序列%26
,该序列在URL中有效。您可以使用
它将转义URL中无法逐字出现的所有字符:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
在本例中,符号和字符&
将替换为转义序列%26
,该序列在URL中有效。您可以在JavaScript端使用Base64编码对字符串进行编码,然后在服务器端使用PHP(?)对其进行解码
JavaScript()
PHP():
您可以在JavaScript端使用Base64编码对字符串进行编码,然后在服务器端使用PHP(?)对其进行解码
JavaScript()
PHP():
Ramil Amr的答案只适用于角色(&C)。如果您有一些其他特殊字符,那么应该使用PHP的htmlspecialchars()
和JS的encodeURIComponent()
你可以写:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
在服务器端:
htmlspecialchars($_POST['wysiwyg']);
这将确保AJAX将按预期传递数据,PHP(万一您将数据插入数据库)将确保数据按预期工作。Ramil Amr的回答仅适用于&character。如果您有一些其他特殊字符,那么应该使用PHP的htmlspecialchars()
和JS的encodeURIComponent()
你可以写:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
在服务器端:
htmlspecialchars($_POST['wysiwyg']);
这将确保AJAX按预期传递数据,PHP(如果您将数据插入数据库)将确保数据按预期工作。首选方法是使用JavaScript库(如jQuery)并将数据选项设置为对象,然后让jQuery进行编码,如下所示:
$.ajax({
type: "POST",
url: "/link.json",
data: { value: poststr },
error: function(){ alert('some error occured'); }
});
如果您不能使用jQuery(这几乎是当今的标准),请使用。首选方法是使用诸如jQuery之类的JavaScript库并将数据选项设置为对象,然后让jQuery进行编码,如下所示:
$.ajax({
type: "POST",
url: "/link.json",
data: { value: poststr },
error: function(){ alert('some error occured'); }
});
如果您不能使用jQuery(这几乎是现在的标准),请使用
这将截断特殊字符
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
这将截断特殊字符。您可以使用此encodeURIComponent函数传递参数,这样就不必担心传递任何特殊字符
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
或
您可以使用此encodeURIComponent函数传递参数,这样就不必担心传递任何特殊字符
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
或
这足以安全地转义数据,还是“刚好”足以避免“与”号问题?@Sprottenwels,这足以正确编码所有数据。在这种情况下,您所说的“安全”是什么意思?这足以安全地转义数据,还是“仅仅”足以避免“与”符问题?@Sprottenwels,这足以正确地编码所有数据。在此上下文中,您所说的“安全”是什么意思?这不会为上述答案增加任何价值。这不会为上述答案增加任何价值