我有下面的 jQuery-AJAX 代码和一个表单:
<script type="text/javascript">
$(document).ready(function () {
$('form').submit(function () {
form_data = $(this).serializeArray();
$.ajax({
url: "/frontend_dev.php/coche1/update/id/1",
type: "POST",
data: form_data
});
});
return false;
});
</script>
正如你所看到的,我正在使用serializeArray()
但是当我使用serialize()
它也同样工作..
为什么在这两种情况下效果相同?我应该使用其中的哪些?
我使用 symfony 作为 php 框架。如果您需要,我可以为您提供更多信息。
如果一个对象/数组被传递(其中.serializeArray() http://api.jquery.com/serialize/返回),它是通过序列化的$.param() http://api.jquery.com/jQuery.param/.
如果传递了一个字符串(其中.serialize() http://api.jquery.com/serialize/返回)它不会做任何进一步的事情。
...所以它们在传递时具有相同的效果data
财产。您可以在这里找到相关检查 https://github.com/jquery/jquery/blob/1.4.4/src/ajax.js#L207:
// convert data if not already a string
if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data, s.traditional );
}
您应该使用哪一个?它really这里并不重要,.serialize()做同样的事情$.param() call https://github.com/jquery/jquery/blob/1.4.4/src/ajax.js#L89,所以他们做的工作量完全相同。我个人使用.serialize() http://api.jquery.com/serialize/因为打字的次数更少了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)