Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax url编码问题_Php_Javascript_Jquery_Ajax - Fatal编程技术网

Php Ajax url编码问题

Php Ajax url编码问题,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我试图做的是将加密消息和相应的密钥(双向加密)发送到php页面,以便对其进行解密,然后在响应中返回结果 下面是我试图用jquery发送的加密消息的一个示例 var message = 'oPnHK7DE33xOLZok/23a92XH9NI3SlHGCulnh6+IuZN4cGhymYm5yxOmDynCDAG8u+cAbJ4KifxzsWsGgmTXoZoAtjkAhph/eWyuwMNfviNtgmz4x02JVJ6Rc6wDsqzzd6Mrl88ZZXyEshD1/+9JRS9rNalCt

我试图做的是将加密消息和相应的密钥(双向加密)发送到php页面,以便对其进行解密,然后在响应中返回结果

下面是我试图用jquery发送的加密消息的一个示例

var message = 'oPnHK7DE33xOLZok/23a92XH9NI3SlHGCulnh6+IuZN4cGhymYm5yxOmDynCDAG8u+cAbJ4KifxzsWsGgmTXoZoAtjkAhph/eWyuwMNfviNtgmz4x02JVJ6Rc6wDsqzzd6Mrl88ZZXyEshD1/+9JRS9rNalCtv//pC2FRAZMQhH5wxDn9kb6JITSs/aagUGFbLmq+jxg5ty55SKmri6IJg==';

var key = 'password';

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {
    // do stuff with returned data here
});
接收的php代码如下所示

 <?php
 $encrypted = rawurldecode($_POST['message']);
 $key = $_POST['key'];

 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

 echo $decrypted

 ?>
var data = { message: message, key: key };
$.post('decodeMessage.php', data, function(data) {
   //handler 
});

我的问题是,它只是返回胡言乱语,而不是实际解码信息

在没有ajax的情况下,我通过将$encrypted的值设置为ajax请求中传递的编码值来测试这一点,效果很好

如果有人能给我一些指导,告诉我为什么会发生这种情况,我将不胜感激


非常感谢。

将数据作为对象发送

$.post('decodeMessage.php', {message: message, key: key}, function(data) {
    // Wohoo
});
你看,jQuery为你处理这些东西,在晦涩难懂的代码层下:-)

这样试试吧

$.post("decodeMessage.php", { message: message, key: key },function(data){
   // ....
});

您正在传递查询字符串

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {
然后使用$\u GET而不是post

 $encrypted = rawurldecode($_GET['message']);
 $key = $_GET['key'];
如果希望在PHP中将元素作为POST变量处理,请将jquery代码更改为

 <?php
 $encrypted = rawurldecode($_POST['message']);
 $key = $_POST['key'];

 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

 echo $decrypted

 ?>
var data = { message: message, key: key };
$.post('decodeMessage.php', data, function(data) {
   //handler 
});

等待你用JavaScript编写消息和密码(这是一个可以在HTML源代码中查看的纯文本)?你现在得了15分:)Eric。。。你就是那个男人!!!我刚试过,第一次就成功了。非常感谢你花时间来帮助我。为那位朋友干杯,我确实试着投票支持你的答案,但我首先需要15分,对不起。再次感谢你的帮助;只要我有15个代表点,我一定会投赞成票。