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); });
        });
    });