ajax发送 符号,javascript - 如何通过AJAX发送“&”(&符号)字符?

javascript - 如何通过AJAX发送“&”(&符号)字符?

我想从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+="&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);

字符串是:

"Busola"

8个解决方案

141 votes

您可以使用encodeURIComponent()。

它将逃避URL中不能逐字出现的所有字符:

var wysiwyg_clean = encodeURIComponent(wysiwyg);

在此示例中,&符号&将由转义序列%26替换,该序列在URL中有效。

Frédéric Hamidi answered 2019-05-16T17:53:24Z

15 votes

您可能想使用encodeURIComponent()。

encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B

Wolfram answered 2019-05-16T17:53:48Z

8 votes

你需要url逃脱&符号。 使用:

var wysiwyg_clean = wysiwyg.replace('&', '%26');

正如Wolfram所指出的那样,通过encodeURIComponent可以很好地处理它(以及所有其他特殊字符)。

Ned Batchelder answered 2019-05-16T17:54:20Z

4 votes

Ramil Amr的回答仅适用于& 字符。 如果你有其他特殊字符,你应该使用PHP的htmlspecialchars()和JS的encodeURIComponent()。

你可以写:

var wysiwyg_clean = encodeURIComponent(wysiwyg);

在服务器端:

htmlspecialchars($_POST['wysiwyg']);

这将确保AJAX将按预期传递数据,并且PHP(如果您将数据存入数据库)将确保数据按预期工作。

Nadav S. answered 2019-05-16T17:55:02Z

1 votes

首选方法是使用jQuery之类的JavaScript库并将数据选项设置为对象,然后让jQuery执行编码,如下所示:

$.ajax({

type: "POST",

url: "/link.json",

data: { value: poststr },

error: function(){ alert('some error occured'); }

});

如果你不能使用jQuery(这几乎是标准),请使用encodeURIComponent。

Christopher Tokar answered 2019-05-16T17:55:34Z

0 votes

您可以在JavaScript端使用Base64编码对您的字符串进行编码,然后使用PHP(?)在服务器端对其进行解码。

JavaScript(Docu)

var wysiwyg_clean = window.btoa( wysiwyg );

PHP(文档):

var wysiwyg = base64_decode( $_POST['wysiwyg'] );

Sirko answered 2019-05-16T17:56:13Z

0 votes

encodeURIComponent(Your text here);

这将截断特殊字符。

user10164982 answered 2019-05-16T17:56:38Z

0 votes

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

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

要么

var someValue = 'Dolce & Gabbana';

data: "param1=getAccNos&param2="+encodeURIComponent(someValue)

[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent]

nikhil answered 2019-05-16T17:57:12Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值