Javascript 我怎样才能发送&&引用;(符号)字符通过AJAX?

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

我想用JavaScript中的
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+="&sectiune="+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">&quot;Busola&quot;</span>
字符串是:

var wysiwyg = dijit.byId("wysiwyg").get("value");
var wysiwyg_clean = wysiwyg.replace('&','\&');

var poststr = "act=save";

poststr+="&titlu="+frm.value.titlu;
poststr+="&sectiune="+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">&quot;Busola&quot;</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&param2="+encodeURIComponent('Dolce & Gabbana') 

这将截断特殊字符。

您可以使用此encodeURIComponent函数传递参数,这样就不必担心传递任何特殊字符

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') 


您可以使用此encodeURIComponent函数传递参数,这样就不必担心传递任何特殊字符

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') 


这足以安全地转义数据,还是“刚好”足以避免“与”号问题?@Sprottenwels,这足以正确编码所有数据。在这种情况下,您所说的“安全”是什么意思?这足以安全地转义数据,还是“仅仅”足以避免“与”符问题?@Sprottenwels,这足以正确地编码所有数据。在此上下文中,您所说的“安全”是什么意思?这不会为上述答案增加任何价值。这不会为上述答案增加任何价值