&我的新密码不允许

时间:2013-03-03 09:30:07

标签: php jquery

我的网站上有一个窗口,访问者可以在其中更改密码。

问题在于&人物永远不会被采取:

如果我把这两个新密码:

堆&安培; 堆栈&安培; (第二个是确认)

BD中的插入是堆栈(没有&)。

这是js代码:

data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),

警报告诉我“堆栈&”

在PHP中,$ _POST的var_dump给了我:

堆叠(没有&)。

是& jquery的保留字?

这是我的js代码:

$.ajax({
                            type: 'POST',
                            url: 'modification_mdp.php',
                            data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),
                            dataType: 'text',
                            success: function(reponse) {
                                reponse = $.trim(reponse);

请你知道解决这个问题吗?

提前致谢。

4 个答案:

答案 0 :(得分:2)

对字段值进行编码

data: 'nouveau_mdp=' + encodeURI($('input#champ_nouveau_mdp').val()),

通过这种方式&使用ascii编号进行编码。

答案 1 :(得分:0)

不能通过Get方法或PHP中的Post方法传递&符号。由于通过GET方法访问PHP的常用语法是ines.php?user=username&password=mypassword, '&'字符分隔两个变量。

这就是为什么不采取'&'来自'Stack&'您可以使用Javascript验证是否&未在文本框中输入。使用JavaScript对变量进行编码... PHP端不需要解码

encodeURIComponent("stack&")

答案 2 :(得分:0)

尝试传递一个关联数组,jQuery将为您编码:

data: { nouveau_mdp: $('input#champ_nouveau_mdp').val() }

您需要更改接收此值以匹配的PHP代码(它获取数组而不是字符串)。

答案 3 :(得分:0)

这一行是问题所在:

data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),

& character在HTTP中有特殊含义。如果您有多个参数,它们将由&分隔。例如nouveau_mdp = mynewpassword&安培; old_mdp = myoldpassword

您需要做的是将&,=等字符编码为十六进制等值,即分别为%26和%3D。

在JavaScript中,您可以使用 encodeURI()函数执行此操作。

尽管如其他答案所述,jQuery还允许您传递参数的JSON字典,它会为您进行编码。