Php jQuery AJAX post正在更改post数据中的字符

Php jQuery AJAX post正在更改post数据中的字符,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我使用jQuery post将复选框值发布到另一个文件中,我知道该页面工作正常,逻辑正确,因为当我不使用jQuery post时,该页面工作正常,问题是它似乎弄乱了数组,因此导致它无法正常工作 Myradio字段使用以下表单字段: <input type="checkbox" name="radio[]" value="<? print $id; ?>"> 这是当我使用print\r($\u POST)以正常形式提交时发布的内容 这很好,问题是它在jQuery AJAX

我使用jQuery post将复选框值发布到另一个文件中,我知道该页面工作正常,逻辑正确,因为当我不使用jQuery post时,该页面工作正常,问题是它似乎弄乱了数组,因此导致它无法正常工作

My
radio
字段使用以下表单字段:

<input type="checkbox" name="radio[]" value="<? print $id; ?>">
这是当我使用
print\r($\u POST)以正常形式提交时发布的内容

这很好,问题是它在jQuery AJAX中不起作用,所以我可以在不刷新的情况下处理数据,当我使用jQuery AJAX发布表单时,数据如下所示:

Array (
    [ros] => sell
    [submit] => submit
    [radio] => radio %5B %5D=15&radio%5B%5D=14&ros=sell
)
这是我的jQuery AJAX post脚本:

function submitgarage() {
    var submit = $("input[name=submit]").val();
    var ros = $("#ros option:selected").val(); 
    var radio = $("#garageform").serialize();
    $.post("ajax/vehicles/garage.php", { ros: ros, submit: submit, radio: radio },
    function(data) {
        $('#results').html(data);
    });
}
正如您所看到的,它正在添加
%5B
%5D
等,我尝试使用
utf8\u解码
,导致服务器500错误,尝试使用
urldecode
,我怀疑这无论如何都不起作用,我是对的,我似乎无法让它像以前一样发布


我已经检查了有关堆栈溢出的其他主题,但似乎找不到解决方案。

使用parse_str,您的示例帖子效果非常好:

parse_str("radio %5B %5D=15&radio%5B%5D=14", $jqarr);
print_r($jqarr); // Only for print array   

Array
(
    [radio_] => Array
        (
            [0] => 15
        )

    [radio] => Array
        (
            [0] => 14
        )

)

jQuery的AJAX序列化了给定的数据对象,但是您已经序列化了radio字段,所以将其序列化两次

您的
radio
变量需要是一个数组,而不是已经序列化的数据

var radio = $("#garageform [name='radio[]']:checked").get().map(function(e) {
    return e.value;
});

如您所知,
%5B
%5D
分别是
[
]
的百分比编码表示。不幸的是,缺少html和代码,它们将显示在处理请求过程中所显示字符串的位置(客户端/浏览器、服务器;js、php)。还请提供生成预期结果的(非jquery)代码示例。您可能希望在客户端上尝试使用类似fiddler的web代理来检查客户端和服务器之间交换的http消息的内容。谢谢,我添加了输入字段和它发布到的代码部分,谢谢,只需解码这些值
parse_str("radio %5B %5D=15&radio%5B%5D=14", $jqarr);
print_r($jqarr); // Only for print array   

Array
(
    [radio_] => Array
        (
            [0] => 15
        )

    [radio] => Array
        (
            [0] => 14
        )

)
var radio = $("#garageform [name='radio[]']:checked").get().map(function(e) {
    return e.value;
});