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发布仅返回多个选择框的第一个值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AJAX填充Select2不可点击

如何选择 Access Web 兼容表单中组合框的第一项?

使用多个数据框的第一行的第一个元素创建箱线图

仅存储多个用户生成值中的第一个的动态分配数组

Pyspark:查找两个数据框的交集仅返回一列具有值

谁知道怎么用ajax实现选择下拉框的时候动态从数据库读取数据吗