Ajax发布仅返回多个选择框的第一个值[关闭]
Posted
技术标签:
【中文标题】Ajax发布仅返回多个选择框的第一个值[关闭]【英文标题】:Ajax post only returning first value for multiple select box [closed] 【发布时间】:2021-09-27 23:51:12 【问题描述】:我有一个 MVC 表单,它有一个选择框,其中应用了多个元素,以便用户可以在列表中选择多个选项。
然后我有一个 ajax 帖子将此信息保存到表中:
$(".save").on("click", function (e)
disableButton($(e.currentTarget));
waitForFinalEvent(function ()
$.ajax(
url: "@Url.Action("Requirements", "Api/Access")",
type: "POST",
data:
UserId: "@ViewBag.Id",
Software: $("#ExtraSoftwareSelect").val(),
).done(function (data)
toastr.success("Successfully save information", "Success");
window.location.href = '@Url.Action("", "")';
).fail(function (error)
displayError(error);
).always(function ()
enableButton($(e.currentTarget));
);
, 250, "Saving results.");
);
我的选择框:
<div class="form-group col-xs-12 col-sm-4">
<div class="input-group ">
<span class="input-group-addon white">Extra Software</span>
<select class="form-control gray software-select" id="ExtraSoftwareSelect" title="Select Software" multiple></select>
</div>
</div>
我的动作控制器:
[HttpPost]
[Route("Requirements")]
[CustomApiAuthorize(Roles = UserRole.Manager)]
public async Task<IHttpActionResult> PostRequirements(RequirementsDetails data)
var software = await _slg_Entity.Software.FirstOrDefaultAsync(z => z.Software1 == data.Software);
var extraSoftware = new UserSoftware
UserId = data.UserId,
ExtraSoftware = data.Software,
SoftwareId = software.Id
;
Entity.UserSoftware.Add(extraSoftware);
await _slg_Entity.SaveChangesAsync();
return Ok();
问题在于该字段的值仅返回第一个选择的选项“MiniTab”。 我不确定它是如何通过的。也许它需要以某种方式添加到列表中?我希望它会返回一个用逗号分隔的选定字符串。
欢迎所有建议,谢谢。
【问题讨论】:
这能回答你的问题吗? Using jQuery, how do you mimic the form serialization for a select with multiple options selected in a $.ajax call? @TimHunter 我试过了,但似乎没有用。 您也必须发布您的选择框代码。我们不知道你是如何创建它的 @Serge 用我的选择框更新了帖子 谢谢,但我看不出你是怎么填的?所有物品来自哪里? 【参考方案1】:修复 ajax
var softwareArr = $("#ExtraSoftwareSelect").val().slice();
$.ajax(
url: '@Url.Action("Requirements", "Api/Access")',
type: "POST",
data:
details:
userId: "@ViewBag.Id",
extraSoftware: softwareArr
,
success: function (result)
.....
,
error: function (xhr, exception)
....
);
并修复RequirementsDetails 类
public class RequirementsDetails
public int UserId get; set;
public string[] ExtraSoftware get;set;
动作
Route("~/Api/Access/Requirements")]
public async Task<IHttpActionResult> PostRequirements(RequirementsDetails details)
.....
【讨论】:
@h3x3n95 请不要忘记接受答案,如果它有效以上是关于Ajax发布仅返回多个选择框的第一个值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章