我正在尝试将用户输入存储在javascript数组中,并通过ajax调用将其发送到控制器。但是我在控制器的参数中得到的都是null。这是代码:
<table class="table-condensed table-bordered table-striped table-responsive">
@foreach (var project in projects)
{
<tr>
@foreach (var parameter in parameters)
{
<td>
<input type="text" class="form-control remar" id=@i />
</td>
i++;
}
</tr>
}
<tr>
<td colspan=@(parameters.Count() + 1)>
<button class="btn btn-primary pull-right" onclick="insert()">Submit Remarks</button>
</td>
</tr>
</table>
<script>
function insert() {
var remarks = [];
jQuery(".remark").each(function () {
remarks.push(jQuery(this).val());
});
$.ajax({
type: "POST",
url: "@Url.Action("AddRemarksToEvaluationSheet", "Teacher")",
data: JSON.stringify({ function_param: remarks }),
contentType: "application/json; charset=utf-8;"
});
}
</script>
控制器:
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
{
return View();
}
有什么帮助吗?PS上面的代码已被编辑。有效!
这里有很多事...
首先,不要在输入框中输入数字的ID-在这种情况下,您甚至都不会使用该值...但是,如果需要,可以将值放入数据元素中:
<input type="text" class="form-control remark" data-remark-id="@i" />
检索值时,您需要获取值,而不是文本框本身:
var remarks = [];
jQuery(".remark").each(function() {
remarks.push(jQuery(this).val());
});
当对参数进行奇怪的处理时(例如数组或复杂对象),如果使用JSON而不是默认的URL编码,它将使事情变得更好。
您还应该避免使用绝对路径,而应使用绝对路径,Url.Action
这样无论您的应用相对于域位于何处,它都将起作用。
$.ajax({
type: "POST",
url: "@Url.Action("AddRemarksToEvaluationSheet", "Teacher")",
data: JSON.stringify({ function_param: remarks }),
contentType: "application/json; charset=utf-8;"
});
您可以接受字符串数组,而不是对象数组:
[HttpPost]
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句