Javascript 除非使用警告消息,否则我的js代码无法按预期工作
我有一个输入字段:Javascript 除非使用警告消息,否则我的js代码无法按预期工作,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我有一个输入字段: <input class="quantityInput" data-index="@table.Rows.IndexOf(row)" type="number" value="@row[col.ColumnName]" min="1"/> 在我的控制器中: public JsonResult BasketSession(int Id, int value) { (HttpContext.Session["bask
<input class="quantityInput" data-index="@table.Rows.IndexOf(row)"
type="number" value="@row[col.ColumnName]" min="1"/>
在我的控制器中:
public JsonResult BasketSession(int Id, int value)
{
(HttpContext.Session["basket"] as DataTable).Rows[Id][2] = value;
return Json(true);
}
如果我不使用alert,当我使用keybord更改输入字段的值时,我的json func不起作用,但通过鼠标单击逐个增加或减少,无论我在chrome中使用alert还是not,json func都会起作用
在firefox中,它根本不起作用
我希望您能理解我的问题正如有人指出的,这是一个ajax调用,不会立即解决。不必深入了解太多细节,您可以在getJSON返回数据时使用done方法执行一些代码
$(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和promises的更多信息。此代码适用于我:
$(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链接到ajax不是即时的。在重新加载之前,您必须给它一段时间来完成。如果您想等到ajax调用之后再执行重新加载,请将代码放入成功函数处理程序的主体中。但是如果不使用alert,func的断点不存在,您是否已将重新加载移动到成功函数处理程序的主体中?否则,正如@Kevin B所述,重载可能会在ajax调用返回之前发生。
$(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); });
});
});