我有一个输入字段:
<input class="quantityInput" data-index="@table.Rows.IndexOf(row)"
type="number" value="@row[col.ColumnName]" min="1"/>
这是我的js代码:
$(document).ready(function () {
$(function () {
$(document).on('change', '.quantityInput', function () {
var data = {
Id: $(this).data('index'),
value: $(this).val()
};
$.getJSON("/Order/BasketSession/", data, function (result) { });
location.reload(true);
alert("hi!");
});
});
在我的控制器中:
public JsonResult BasketSession(int Id, int value)
{
(HttpContext.Session["basket"] as DataTable).Rows[Id][2] = value;
return Json(true);
}
如果我不使用alert
,当我使用keybord更改输入字段的值但我的json
func没有工作但是如果我使用鼠标单击增加或减少它会工作是alert
还是不是(镀铬)
在Firefox中它根本不起作用
我希望你能理解我的问题
答案 0 :(得分:2)
正如有人已经指出的那样,这是一个ajax调用,并没有立即解决。在没有深入细节的情况下,您可以使用done
方法在getJSON
返回数据时执行一些代码。
$(document).ready(function() {
$(document).on('change', '.quantityInput', function () {
var data = {
Id: $(this).data('index'),
value: $(this).val()
};
$.getJSON("/Order/BasketSession/", data).done(function(){
location.reload(true);
console.log("hi!");
});
});
});
这是有效的,因为getJSON
会返回将来会发生的事件的承诺。您可以找到有关getJSON
和承诺here的更多信息。
答案 1 :(得分:0)
这段代码对我有用:
$(document).ready(function () {
$(function () {
$(document).on('change', '.quantityInput', function () {
var data = {
Id: $(this).data('index'),
value: $(this).val()
};
var jqxhr = $.getJSON("/Order/BasketSession/", data, function () { });
jqxhr.complete(function() { location.reload(true); });
});
});
感谢@danielepolencic链接到jQuery.getJSON()