Php jQuery AJAX post正在更改post数据中的字符
我使用jQuery post将复选框值发布到另一个文件中,我知道该页面工作正常,逻辑正确,因为当我不使用jQuery post时,该页面工作正常,问题是它似乎弄乱了数组,因此导致它无法正常工作 MyPhp 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
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;
});