Javascript 返回动态字符串数组的问题
我在一个模式弹出窗口中有一个表单,用户可以在文本框中输入文本,然后单击加号按钮,动态地将他们键入的文本添加到一个div中,这样他们就可以继续添加另一个Javascript 返回动态字符串数组的问题,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我在一个模式弹出窗口中有一个表单,用户可以在文本框中输入文本,然后单击加号按钮,动态地将他们键入的文本添加到一个div中,这样他们就可以继续添加另一个 <div class="form-group"> <label class="control-label col-sm-4" for="prefix"> Cast <span style="color:red">*</span> </label>
<div class="form-group">
<label class="control-label col-sm-4" for="prefix">
Cast <span style="color:red">*</span>
</label>
<div class="col-sm-5">
<input type="text" class="form-control col-sm-5" id="Cast" />
</div>
<div class="col-sm-1">
<button type="button" id="btnNewCast" class="btn btn-default">+</button>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" for="prefix"></label>
<div class="col-sm-6" id="newCast">
</div>
</div>
它被映射到我的模型,并且工作正常
控制器:
[HttpPost]
public ActionResult Add(Movie model)
{
return View();
}
我的模型声明如下:
public int MovieId { get; set; }
public int Rating { get; set; }
public int ReleaseDate { get; set; }
public string Title { get; set; }
public string Classification { get; set; }
public string Genre { get; set; }
public string[] Cast { get; set; }
我的问题是,正如您所看到的,Cast是一个字符串数组,用户输入的项目(如图所示)我试图在发布时将它们全部映射到Cast字符串数组
我试过了
"Cast": $("#cast[]").val()
但我在发布无法识别的表达式时遇到jquery错误
我无法将它正确地映射到地图上
**更新**完成发布方法
$("#btnAddMovie").click(function () {
var stringArr = $('span[data-id="cast[]"]').map(function() {
return $(this).text().trim();
});
$.ajax({
url: '/Movies/Add',
//data: $('NewMovie').serialize(),
data: { "Title": $("#Title").val(), "Classification": $("#Classification").val(), "Rating": $("#Rating").val(), "ReleaseDate": $("#ReleaseDate").val(), "Cast": stringArr },
cache: false,
type: "POST",
success: function (result) {
if (result.success) {
}
},
error: function (result) {
alert("Error");
}
});
});
几个问题:
没有.val()(值)
,请使用text()
[]
-普通#..
选择器中不允许使用特殊字符。使用[id=”“]
map()
对其进行迭代另外,通过jQuery创建
span
的方式,ID=cast[]被复制,而复制的ID是无效的标记。使用class属性或data-*
属性,如data id=“cast[]
。代码将是:
var stringArr = $('span[data-id="cast[]"').map(function(){
return $(this).text().trim();
});
-@ShaunakD我有一个名为Cast的输入,他们在其中键入名称,但用户输入的文本会使用我显示的jquery动态添加到视图中。我需要将每个输入的名称传递回控制器。因此我需要了解如何将他们输入的名称映射到Cast字符串arrayYes,我是conf使用
.val()
作为val()时使用
仅适用于输入,显示的代码中没有任何输入。请参阅下面的答案,检查它是否有效。我已实现了您的建议,但现在我收到TypeError:对未实现接口位置的对象调用了“assign”。我已使用完整的post方法更新了我的问题,包括您的suggestionTry选项traditional:true,
在ajax中。或者传递一个逗号分隔的字符串并拆分为数组服务器端。这很有效,但在我的控制器中,我得到的不是Cast[]中的文本,而是[object,object]恐怕您需要在模型中使用List Cast
。ajax有一些限制,其中数组是一个数组。我无法访问该模型,它是由.dll提供的。我在web上查看了如何在控制器中将数组转换为列表,并尝试了以下操作:List List List=new List(model.Cast);这仍然只是显示[对象,对象]
"Cast": $("#cast[]").val()
$("#btnAddMovie").click(function () {
var stringArr = $('span[data-id="cast[]"]').map(function() {
return $(this).text().trim();
});
$.ajax({
url: '/Movies/Add',
//data: $('NewMovie').serialize(),
data: { "Title": $("#Title").val(), "Classification": $("#Classification").val(), "Rating": $("#Rating").val(), "ReleaseDate": $("#ReleaseDate").val(), "Cast": stringArr },
cache: false,
type: "POST",
success: function (result) {
if (result.success) {
}
},
error: function (result) {
alert("Error");
}
});
});
var stringArr = $('span[id="cast[]"').map(function(){
return $(this).text().trim();
});
var stringArr = $('span[data-id="cast[]"').map(function(){
return $(this).text().trim();
});