Home > Web Front-end > JS Tutorial > body text

Example analysis of data parameter type of Ajax() in JQuery_jquery

WBOY
Release: 2016-05-16 15:25:32
Original
1127 people have browsed it

This article analyzes the data parameter type of Ajax() in JQuery through examples. Share it with everyone for your reference, the details are as follows:

The previous analysis briefly introduced "Two ways of passing data parameters in ajax". Now that we have a preliminary understanding of the ways of passing data parameters in ajax, let's further analyze the types of data parameters in ajax.

Suppose there is such a form now, which is used to add elements.

<form id='addForm' action='UserAdd.action' type='post'>
  <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br>
  <label for='mobileIpt'>手机号:</label><input type='text' name='mobileIpt' id='mobileIpt'><br>
  <label for='birthday'>生日:</label><input type='text' name='birthday'><br>
  <input type='button' value='提交' onclick='addUser()'>
</form>

Copy after login

We don’t want to use form submit to add this element, we want to use ajax to submit.

This is how we implemented it before:

function addUser(){
  var user = {
   uname:$("#uname").val(),
   mobileIpt:$("#mobileIpt").val(),
   birthday:$("#birthday").val()
  };
  $.ajax({
   url:'UserAdd.action',
   data:user,
   type:'post',
   dataType:'text',
   success:function(msg){
    if(msg=='1'){
     console.log('添加成功');
    }else{
     console.log('添加失败')
    }
   }
  })
}

Copy after login

There is nothing wrong with this, but it is too troublesome to get the values ​​of form elements.... There are only three items here, and it will be useless if there are many items....

Until one day, I discovered jquery’s serializeArray method

Serialized table elements (similar to '.serialize()' method) return JSON data structure data.

Note that this method returns a JSON object rather than a JSON string. You need to use a plug-in or third-party library for stringification operations.

The returned JSON object is composed of an object array, where each object contains one or two name-value pairs - name parameter and value parameter (if value is not empty).

Let’s give it a try

$('#addForm').serializeArray();
//返回数据结构,是json数组,每个对像分别name和value为key,代表这个表单元素的name和value
[
 {"name":"uname","value":""},
 {"name":"mobileIpt","value":""}, 
 {"name":"birthday","value":""}
]

Copy after login

This seems to be useless

Let’s use the JQuery.param() method to handle it:

var arr = $('#addForm').serializeArray();
$.param(arr);
"uname=alice&mobileIpt=110&birthday=1983-05-12"

Copy after login

Hey, now it meets our needs. Although it is not of json type, it can at least be uploaded as data.

Here we can directly fill in the json array in the ajax data, and call $.param() inside jquery to process it.

Let’s take a look at the description of the jquery.param() method:

Return value: StringjQuery.param(obj,[traditional])

Serialize the form element array or object.

Parameters:

obj,[traditional]

Arrays or jQuery objects will be serialized according to name/value pairs, and ordinary objects will be serialized according to key/value pairs.

traditional: Whether to use traditional shallow serialization.

demo:

$.param({uanme:'vic',mobileIpt:'110',birthday:'2013-11-11'});
"uanme=vic&mobileIpt=110&birthday=2013-11-11"

Copy after login

Looking at the description, it seems that it has nothing to do with us. Let’s change it to a json array

$.param([{uanme:'vic'},{mobileIpt:'110'},{birthday:'2013-11-11'}]);
"undefined=&undefined=&undefined="

Copy after login

Is this conversion unsuccessful? Why can the data in our form be successfully converted into url parameters? Let’s take a look at the jquery source code

//在ajax()方法中,对json类型的数据进行了$.param()处理
if ( s.data && s.processData && typeof s.data !== "string" ) {
 s.data = jQuery.param( s.data, s.traditional );
}
//param方法中
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
  // Serialize the form elements
  jQuery.each( a, function() {
   add( this.name, this.value );
  });
 } else {
  // If traditional, encode the "old" way (the way 1.3.2 or older
  // did it), otherwise encode params recursively.
  for ( prefix in a ) {
   buildParams( prefix, a[ prefix ], traditional, add );
  }
 }

Copy after login

Now you understand, if it is json data, then loop one by one and only take their name attribute and value attribute to splice the string.

If it is a normal object, loop the properties of the object and then concatenate the strings.

Summary:

So, what this article is going to say is that in the ajax function of jquery, 3 types of data can be passed in
1. Text: "uname=alice&mobileIpt=110&birthday=1983-05-12"
2.json object: {uanme:'vic',mobileIpt:'110',birthday:'2013-11-11'}
3.json array:

[
 {"name":"uname","value":"alice"},
 {"name":"mobileIpt","value":"110"}, 
 {"name":"birthday","value":"2012-11-11"}
]

Copy after login

So, we can get the form and submit it with one click, which is very convenient.

Supplement:

In fact, to extract form data, you only need to use the serialize() method to directly obtain "uname=alice&mobileIpt=110&birthday=1983-05-12".

I hope this article will be helpful to everyone in jQuery programming.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template