当我使用ajax将序列化数据发送到PHP文件时,有时会根据我的方式对其进行URL编码。
本来我有下面的代码工作正常:
$.ajax({
type: 'POST',
url: 'ajax-process.php',
data: $("#sitestructure-form").serialize(),
success: function(d){$("#structureupdate").html(d);}
});
数据已发送到我的PHP文件,我可以回显它,它看起来像这样。
[{"id":20,"children":[{"id":21}]},{"id":19},{"id":18,"children":[{"id":14}]},{"id":16},{"id":13,"children":[{"id":11}]},{"id":17},{"id":15},{"id":12}]
我想发送多个数据,我称序列化数据为“订单”,并向其中添加了“过程”,所以我将代码更新为以下内容:
$.ajax({
type: 'POST',
url: 'ajax-process.php',
data: {
order: $("#sitestructure-form").serialize(),
process: "sitemap-reordernavigation"
},
success: function(d){$("#structureupdate").html(d);}
});
但是,当我检索以“ order”发送的序列化数据时,输出如下所示:
data=%5B%7B%22id%22%3A20%2C%22children%22%3A%5B%7B%22id%22%3A21%7D%5D%7D%2C%7B%22id%22%3A19%7D%2C%7B%22id%22%3A18%2C%22children%22%3A%5B%7B%22id%22%3A14%7D%5D%7D%2C%7B%22id%22%3A16%7D%2C%7B%22id%22%3A13%2C%22children%22%3A%5B%7B%22id%22%3A11%7D%5D%7D%2C%7B%22id%22%3A17%7D%2C%7B%22id%22%3A15%7D%2C%7B%22id%22%3A12%7D%5D
我能想到的解决此问题的唯一方法是使用php对它进行urldecode,然后使用str_replace删除前面的“ data =”位,就像这样。
$data = str_replace("data=","",urldecode($_POST['order']));
我怎样才能使它与AJAX一起使用,所以我不必urldecode呢?
香港专业教育学院试图使用一个变量,并将processData设置为false,但似乎没有工作。
var order = $("#sitestructure-form").serialize();
$.ajax({
type: 'POST',
url: 'ajax-process.php',
processData: false,
data: {
order: order,
process: "sitemap-reordernavigation"
},
success: function(d){$("#structureupdate").html(d);}
});
我对AJAX / Jquery的了解非常有限,因此任何帮助将不胜感激。
通过执行以下操作来修复:
$.ajax({
type: 'POST',
url: 'ajax-process.php?',
data: $("#sitestructure-form").serialize() + "&action=sitemap-reordernavigation",
success: function(d){$("#structureupdate").html(d);}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句