我想通过使用jQuery $ .ajax将两组文本框的内容传递给我的控制器上的一个操作。代码我至今如下(所有的缩写为了便于阅读):
在我的html:
<div class="venue-holder">
<input class="tb-venue" id="venue" name="venue" readonly="readonly" type="text" value="Esfahan" />
<input class="oldVenue" id="oldvenue" name="oldvenue" type="hidden" value="Shiraz" />
<input class="tb-venue" id="venue" name="venue" readonly="readonly" type="text" value="Tehran" />
<input class="oldVenue" id="oldvenue" name="oldvenue" type="hidden" value="Tabriz" />
</div>
在我的控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateVenue(string[] venue, string[] oldvenue)
{
// do some stuff...
}
在我jQuery:
$('form#formUpdateVenue').submit(function(event) {
event.preventDefault();
var venue = $('input[name=venue]');
var oldvenue = $('input[name=oldvenue]')
$.ajax({
url: '/Admin/UpdateVenue',
type: 'POST',
dataType: 'json',
data: {venue: venue, oldvenue: oldvenue},
success: alert()
});
问题:
上面显示的jquery不起作用。当我提交网页“挂起”并且我的控制器上的操作未被调用时。
但是,如果我有任何的替代data:
部分下面的一切工作正常:
data: venue,
或:
data: old venue,
换句话说,我可以在一组文本框的传递给我的行动和调试我确认我得到正确值的字符串数组。
但是,当我试图通过这两个我得到一个错误。我试过以下所有无效:
data: {venue: venue, oldvenue: oldvenue},
data: {venue, oldvenue},
我该如何传递两个数组?
解决 - 更新基于输入来自达林jQuery的
$('form#formUpdateVenue').submit(function(event) {
event.preventDefault();
var tb = $('input[name=venue]');
var tbVenue = new Array();
tb.each(function() {
tbVenue.push($(this).val());
});
var tbOld = $('input[name=oldvenue]');
var tbOldVenue = new Array();
tbOld.each(function() {
tbOldVenue.push($(this).val());
});
$.ajax({
url: '/Admin/UpdateVenue',
type: 'POST',
dataType: 'json',
data: { venue: tbVenue, oldvenue: tbOldVenue },
traditional: true,
success: alert('Ok')
});
});
您的意思是通过AJAX调用传递整个jQuery对象吗?通常你只会传递这些值。 $(...)。val() – 2010-10-24 20:26:32
是 - 我的意思是$(...)。val()... – 2010-10-25 08:31:27