保存ajax在变量中发送的查询字符串时出错

时间:2015-05-26 18:51:31

标签: php jquery ajax variables url

我正在向这样的ajax页面发送一个变量值

var d = $('#sTree2').sortableListsToString();
$.post('myscript.php?url='+d);

d值为

item_a=0&item_b=0&item_b1=item_b&item_b2=item_b&item_b3=item_b&item_b4=item_b&item_b5=
item_b&item_c=0&item_c1=item_c&item_c2=item_c&item_c3=item_c&item_c4=item_c&item_c5=item_c&
item_d=0&item_d1=item_d&item_d2=item_d&item_d3=item_d&item_d4=item_d&item_d5=item_d&
item_e=0&item_f=0

在php文件中我像往常一样保存值

$url=$_REQUEST['url'];
echo $url;

但结果是

item_a=0

当我打开控制台中的网络选项卡并查看ajax的预览时,我发现相同的错误值item_a = 0,而Header是正确的,包含我上面提到的整个网址

有什么建议吗?

snapshot

3 个答案:

答案 0 :(得分:0)

那是因为你没有正确编码你的字符串。您正在使用两个单独的url编码字符串并将它们拼接在一起。服务器有 NO 的想法,你希望整个事物成为url值的一部分,所以它做了它应该做的事情 - 将事物解码成许多单独的key = value对。

您需要对d进行urlencode,例如

item_a=0&item_b=0&etc.. -> item_a=&item_b=0&etc...

答案 1 :(得分:0)

在php文件中使用$_POST['url'],并通过以下邮件发送数据:

$.post(url, data);

答案 2 :(得分:0)

在没有查询字符串的情况下发送数据解决了问题

$.post('myscript.php?'+d);

然后在php文件中

$url=$_SERVER['REQUEST_URI'];
$url=end(explode("?",$url));
echo $url;