Bulk deletion and batch change status are used on the project, the Easyui DataGrid is used in the foreground, and the batch change data state function is used.
You can get the ID of each data in the foreground, but how do you pass it to the background in an array way?
Through the various ways of debugging last night, finally arrived at the answer! Here as a memo.
There are two ways of doing this:
Way One
Front Code:
[JavaScript]View Plaincopy
- Way One
- var _list = {};
- for (var i = 0; i < checkedrow.length; i++) {
- _list["selectedids[" + i + "]"] = checkedrow[i].id;
- }
- $.ajax ({
- URL: ' @Url. Action ("Setcallbackstatus") ',
- //data: {"Selectedids": _list},
- Data: _list,
- DataType: "JSON",
- Type: "POST",
- //traditional:true,
- Success: function (Responsejson) {
- //Your logic
- Alert (' Ok ');
- }
- });
Attention:
1. _list is an object
2, the attributes in _list need to combine the background parameter name, for example "Selectedids", combined into similar: selectedids[0],selectedids[1] ... ET request.params
Here is the most important, otherwise the background does not recognize. This way you can also pass an array of custom classes. The combination is selectedids[0]. Firstname,selectedids[0]. LASTNAME,SELECTEDIDS[1]. FIRSTNAME,SELECTEDIDS[1]. LastName ...
3. The data parameter of AJAX is directly specified as _list
Background code:
[CSharp]View Plaincopy
- Public ActionResult setcallbackstatus (list<int> selectedids)
- {
- string result = "OK";
- string errmsg = "";
- return this . Jsonformat (new {result = result, ErrMsg = errmsg});
- }
Way Two
Front Code:
[JavaScript]View Plaincopy
- var _list = [];
- for (var i = 0; i < checkedrow.length; i++) {
- _list[i] = checkedrow[i].id;
- }
- $.ajax ({
- URL: ' @Url. Action ("Setcallbackstatus") ',
- Data: { "selectedids": _list},
- //data: _list,
- DataType: "JSON",
- Type: "POST",
- Traditional: true,
- Success: function (Responsejson) {
- //Your logic
- Alert (' Ok ');
- }
- });
Attention:
1, _list is an array.
2. The data in the Ajax parameter is {"Selectedids": _list}
3, this way is more important traditional:true. or convert the _list parameter in 2 to $.param (_list,true). In fact, this is the _list as the traditional way to pass to the backstage. jquery is converted by default. It is said to use PHP .... Background language. In fact, it automatically appends "[]" to the parameter.
Background code:
Same way One
For custom classes, you can also pass the way a jquery ajax to the background
For example:
[CSharp]View Plaincopy < param name= "wmode" value= "Transparent" >
- Customizing the Person class
- Public class person
- {
- public string FirstName { get; set;}
- public string LastName { get; set;}
- }
[CSharp]View Plaincopy < param name= "wmode" value= "Transparent" >
- Background action
- Public ActionResult Setcallbackstatus (list<person> selectedids)
- {
- string result = "OK";
- string errmsg = "";
- return this . Jsonformat (new {result = result, ErrMsg = errmsg});
- }
At this time the front desk JS can write:
[JavaScript]View Plaincopy
- var _list = {};
- for (var i = 0; i < checkedrow.length; i++) {
- _list["selectedids[" + i + "]. FirstName "] = Checkedrow[i]. FirstName;
- _list["selectedids[" + i + "]. LastName "] = Checkedrow[i]. LastName;
- }
- $.ajax ({
- URL: ' @Url. Action ("Setcallbackstatus") ',
- //data: {"Selectedids": _list},
- Data: _list,
- DataType: "JSON",
- Type: "POST",
- //traditional:true,
- Success: function (Responsejson) {
- //Your logic
- Alert (' Ok ');
- }
- });
How Ajax is passed to the background array parameter