****这是jquery脚本。从表中获取值并将其传递给对象****
$(document).ready(function () {
var table = $('#example').DataTable();
$('#example tbody').on('click', 'tr', function () {
$(this).toggleClass('selected');
});
$('#button').click(function () {
debugger;
var Data = [];
var TableData = $.map(table.rows('.selected').data(), function (item) {
var objData = {};
objData.Name = item[0]
objData.Position = item[1]
objData.Office = item[2]
objData.Age = item[3]
objData.Startdate = item[4]
objData.Salary = item[5]
var objparsed = $.makeArray(objData);
for (var x in objparsed) {
Data.push(objparsed[x]);
}
});
alert(Data);
$.ajax({
data: JSON.stringify({ 'Data': Data }),
url: '/Table/SelectedTable',
dataType: "json",
type: 'POST',`enter code here`
contentType: "application/json; charset=utf-8",
});
});
});
******这是她的返回值为null的contoler代码** **我正在将数组传递给mvc控制器但是我正在测试null ****
[HttpPost]
public ActionResult SelectedTable(string[] Data)
{
Models.SelectedTable select = new Models.SelectedTable();
select.Name = Data[0];
select.Position = Data[1];
select.Office = Data[2];
select.Age = Data[3];
select.Startdate = Data[4];
select.Salary = Data[5];
return View(Data);
}
答案 0 :(得分:1)
试试这种方式
var Data=[{Name : item[0],Position : item[1],Office : item[2],Age : item[3],Startdate : item[4],Salary : item[5]}];
<强>的Ajax 强>
jQuery.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: /Table/SelectedTable,
processData: false,
async: false,
data: JSON.stringify('Data':Data),
dataType: "json",
success: function (data) {
returnData = data
},
error: function (data) {
alert(data)
}
});
控制器
public JsonResult SelectedTable(List<SelectedTable> Data)
{
//your code
return Json(new { Status = "Success" }, JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:0)
对于Post控制器操作上的输入变量,数据不是一个非常好的名称,但暂时不要忽略它。
从您发布的JS代码中,Data是一个复杂的对象,而不是您在帖子操作中声明的字符串。这将导致MVC模型绑定使Data为null,因为给定的表单数据与操作签名不匹配。
如果要将其更改为List,那么如果在客户端正确序列化数据数组,则MVC模型绑定将起作用。
答案 2 :(得分:0)
您的Data变量是函数的本地变量:
$('#button').click(function () {
var Data = [];
});
将其置于函数之外使其成为全局:
var Data = [];
$('#button').click(function () {
});
此外,首先对数据进行Stringify,然后使用AJAX。
var ajaxData=JSON.stringify(Data);
$.ajax({
data: ajaxData,
url: '/Table/SelectedTable',
dataType: "json",
type: 'POST',`enter code here`
contentType: "application/json; charset=utf-8",
});
答案 3 :(得分:0)
In Ajax Call
data: { Data: objparsed }
In Controller
var objparsed = JSON.parse(objData); //无需添加为数组
Finally you can deserialize the Data as model objects
SelectedTable(字符串数据)
private Target target = new Target() {
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from)
{
new Thread(new Runnable() {
@Override
public void run() {
File file = new File(
Environment.getExternalStorageDirectory().getPath()
+ ImageName + ."jpg");//+ "/saved.jpg");
try {
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG,100,ostream);
ostream.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
};
答案 4 :(得分:0)
因为意外串联两次而遇到了这个问题......
var peopleArray = new Array();
peopleArray[0] = { FirstName: "John", LastName: "Doe" };
var myPayload = JSON.stringify({ people: peopleArray }); // this is the mistake
$.ajax({
url: "/myController/myMethod",
type: "POST",
traditional: true,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(myPayload),
contentType: 'application/json',
}).done(function (result) {
...
});
});
请注意,有效负载已按字母顺序排列两次。改变这个:
var myPayload = JSON.stringify({ people: peopleArray });
到此:
var myPayload = { people: peopleArray };
解决了这个问题。
答案 5 :(得分:-1)
昨天我遇到了同样的问题。而不是stringify我自己创建了一个字符串,我喜欢的格式。然后使用Ajax
data: { Data: myString },
在控制器端:public ActionResult SelectedTable(string Data)
然后解析数据以获取我需要的值。
希望这有帮助