从文本框传递值到jquery函数和控制器函数
本文关键字:函数 jquery 控制器 文本 | 更新日期: 2023-09-27 18:08:59
我在传递值给jQuery时遇到了一个问题,我想从文本框传递值。
.cshtml
:
@Html.TextBoxFor(m => m.OrderNumber, new { @class = "form-control", id = "orderNumber" })
我的脚本:
function maintenance_tapped(e) {
var data = $('#orderNumber').val();
$("#SapPopUp")
.dialog({
width: 600,
height: 420,
model: true,
buttons: {
"OK": function() {
$.ajax({
url: '@Url.Action("RetrieveOrder", "Home")',
data: data,
type: "POST"
}).done(function() {
$(this).dialog("close");
});
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
}
我的控制器代码:
[HttpPost]
public async Task<ActionResult> RetrieveOrder(string number)
{
if (_sapHelper == null)
{
_sapHelper = new Helper();
}
return View();
}
我的问题是,如果我在RetrieveOrder
函数中放置一个断点,并且我检查number
的值,我得到null
。
然后进入Chrome->inspect element->Console
,输入$('#orderNumber').val()
,我得到了我在文本框中输入的值。
它似乎也没有将值传递给函数
试试这个
dataType :'json',
data: {number: data},
修复了这个问题,感谢Aleksander Matic和Rob Lang。
Soloution
function maintenance_tapped(e) {
//var data = $('#orderNumber').val(); <------- Remove from here
$("#SapPopUp")
.dialog({
width: 600,
height: 420,
model: true,
buttons: {
"OK": function() {
var data = $('#orderNumber').val(); //<--------- Place here
$.ajax({
url: '@Url.Action("RetrieveOrder", "Home")',
data: data,
type: "POST",
dataType :'json', //<-------- Added
data: {number: data}, //<-------- Added
}).done(function() {
$(this).dialog("close");
});
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
}
你可以在一个javascript对象中拥有这个值,并将这个键与你的动作的参数名相匹配。
应该可以。
$.ajax({
url: '@Url.Action("RetrieveOrder", "Home")',
data: {
number: $('#orderNumber').val()
},
type: "POST"
}).done(function() {
$(this).dialog("close");
});
另外,我看到你从动作方法返回一个viewresult,但不使用在你的ajax方法调用的完成/成功事件处理程序。这样做有什么意义?