可以在jquery / javascript中构建数组以将其发送到我的控制器c#吗?
我从多个选择对象中获得了一份雇员名单,我可以这样提醒他们:
<div class="demo">
<select style="display:none" id="liste" multiple="" placeholder="Select">
@foreach (var employe in ViewBag.Employes)
{
<option value="@employe.ID_Employe">@employe.Name</option>
}
</select>
</div>
<a class="btn btn-default" id="check" href="#">Suivant</a>
我的脚本:
$('#check').on('click', function () {
$("#liste").find("option:selected").each(function () { alert($(this).text()); });
});
我发送这样的数据:
$.ajax({
type: 'POST',
dataType: 'json',
url: '/MyAjaxRoute',
data: { arraytosend: arraybuildInJS },
success: function (response) {
if (response.success) {
alert('yes');
}
},
答案 0 :(得分:0)
我猜您正在寻找push。
var arraybuildInJS = [];
$('#check').on('click', function () {
$("#liste").find("option:selected").each(function () { arraybuildInJS.push($(this).text()); });
});
请记住,您应该在控制器中使用字符串的Enumerable。如果您不编写代码,请尝试匹配对象。
答案 1 :(得分:0)
首先在您的Controller中创建一个动作,如下:
public JsonResult SaveArrayData(List<string> myData)
{
if(myData.Count == 0) return Json(new {success = false});
//do something with myData
return Json(new {success = true});
}
然后在您的js代码中,您可以执行以下操作:
var array = [];
$('#check').on('click', function () {
$("#liste").find("option:selected").each(function () {
array.push($(this).text)
});
$.ajax({
type: 'POST',
dataType: 'json',
url: '@Url.Action("SaveArrayData", "MyController")',
data: { myData: array },
success: function (response) {
if (response.success) {
array = [];//empty the array you can also use array.length = 0
alert('yes');
}
}
});
});
答案 2 :(得分:0)
感谢您的回答,我可以成功发送数据,但是我找不到在c#控制器中解析数据的方法
public ActionResult GetAjaxSession(string searchequipe)
{
if (searchequipe != null)
{
var equipe_decode = HttpUtility.UrlDecode(searchequipe);
// how to parse my json variable : searchequipe ?
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
return null;
}