Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
709 views
in Technique[技术] by (71.8m points)

jquery - What's the difference between .serialize() and .serializeArray()?

I'm experimenting with sending a form to a controller. jQuery documentation says that .serializeArray() should send a json array, and .serialize() should create a query string.

However, when I try it, and inspecting with IE9 F12-mode, it looks like a query string, in both cases. Which ever call I make...

What am I missing?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

serializeArray creates an array (not a "json array" -- there is no such thing); you can test this yourself with console.log($("#myform").serializeArray()). On the other hand, serialize creates a query string that's meant to be part of an HTTP request. Both representations are equivalent in the sense that using appropriate code you can convert one to the other without any ambiguity.

The reason for both versions being available is that serialize is more convenient when you just want to make an HTTP request (just put the result in the query string) while serializeArray is more convenient if you want to process the results yourself.

jQuery's AJAX methods don't care if you give them one or the other because they detect the type of the parameter and convert it to a query string if it's not one already, so by the point the request is made outside observers cannot tell what was the original format of the parameters.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...