-1

我有一个输入字段:

    <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,当我使用键盘更改输入字段的值但通过鼠标单击增加或减少时,我的jsonfunc 不起作用,无论我使用alert与否(在 chrome 中)

在Firefox中它根本不起作用

我希望你能理解我的问题

4

2 回答 2

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找到有关和承诺的更多信息。

于 2013-08-13T20:42:25.567 回答
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()

于 2013-08-13T21:23:00.697 回答