我在视图中有一个这样的循环,它会生成学生姓名列表
<Table id="your_table">
<thead>
<tr>
<th>name</th>
<th>grade</th>
<th>remove</th>
</tr>
</thead>
<tbody>
@foreach (string item in Model)
{
<tr>
<td id="td_name" style="border-left: thin">@item</td>
<td><input type="text" id="txtGrade_@item" onclick="" style="width: 40px;border-left: thin" /></td>
<td><input type="checkbox" id="chkStudent_@item" value="@item" /></td>
</tr>
}
</tbody>
我使用下面的脚本获取每行第一个单元格的文本:
$('#btnDone')
.click(function() {
//get studentslist
function getFirstCellTextList(tableElement) {
if (tableElement instanceof jQuery) {
// Create an array
var textList = [];
// Iterate over each table row
tableElement.find('tbody tr').each(function () {
// Get the first cells's text and push it inside the array
var row = $(this);
if (row.children('td').length > 0) {
textList.push(row.children('td').eq(0).text());
}
});
return textList;
}
return null;
}
// Get the array
var lststudents = getFirstCellTextList($('#your_table'));
var result = [];
$(lststudents).each(function(index, item) {
result.push(item);
});
alert(result);
$.ajax('/TeacherPages/GetGrades/' + result).done(function () {
alert("done");
});
});
问题是。当我想将创建的数组发送到控制器时,我得到错误404.这个数组有问题。因为当我手动为数组添加值时,ajax可以正常工作
这是我的行动:
[AttributeRouting.Web.Mvc.GET("/TeacherPages/GetGrades/{result}")]
public PartialViewResult GetGrades(string[] result)
{
return PartialView();
}
答案 0 :(得分:1)
您不能只是将javascript数组附加到您的网址。它只是将数组中的值转换为逗号分隔的字符串,而您需要生成一个
的URL/TeacherPages/GetGrades?result=someValue&result=anotherValue&result=etc...
将脚本更改为
$.ajax({
url: '@Url.Action("GetGrades", "TeacherPages")', // don't hardcode your url's
type: 'POST',
traditional: true,
data: { result: result },
success: function (response) {
....
}
});
作为旁注,你的getFirstCellTextList()
函数正在返回你想要的数组,并且从它创建另一个相同的数组毫无意义。你只需要
var result = getFirstCellTextList($('#your_table'));