0

我有一个带有 jQ​​uery-ui 选项卡的 MVC 页面。当用户选择相关选项卡时,将执行 jQuery ajax 调用以加载选择列表。它工作正常。然后,用户可以通过单击按钮重新加载列表以再次执行相同的调用。

从按钮调用时,ajax 调用总是失败!我尝试交换顺序并跳过选项卡显示上的调用,以使按钮加载成为第一个事件。但它仍然给出了同样的错误。

ajax 调用被隔离在被调用的同一个函数中。当从不同的事件中调用时,这有什么不同?

这是相关代码:

$("#tabs").tabs({
    show: function (event, ui) {
        var tabName = $(ui.tab).attr("href");
        if (tabName == "#tabResult")
            loadResults();
    }
});


$("#btnLoadResults").click(function () {
    loadResults();
});


function loadResults() {
    var testCaseId = $("#TestCase_Id").val();
    $.getJSON("api/TestsApi/GetResults", { testCaseId: testCaseId })
            .done(function (data) {
                $("#lstResults").empty();
                $.each(data, function (index, item) {
                    $("#lstResults").append("<option value='" + item.Id + "' data-response='" + item.Response + "'>" + item.StartTime + "</option>");
                });
                $("#txtResult").val("");
                $("#lstResults").prop("selectedIndex", 0);
            });
}

来自标签显示的调用始终有效。按钮单击调用在调试环境中执行时有效,但在 Intranet 上部署时无效。

我签入了 Fiddler,但两个调用的请求和响应是相同的。

生成的查询字符串看起来很奇怪,就像以某种方式提交了整个当前表单......

我注意到 jQuery-ui 声明选项卡显示事件已“弃用”并且现在要使用“激活”。我试过激活,但它不起作用。我的版本是 jquery-ui-1.8.24.js 和 jquery-1.10.2.min.js

4

1 回答 1

0

这是我对这个问题的反馈。

事实证明,整个问题是按钮缺少类型属性。默认行为在不同的浏览器中是不同的。在 Internet Explorer 中,默认值为 type="submit"。在本地机器上运行时,这以某种方式很好,但在远程机器上它不起作用。我现在指定了 type="button" 一切都很好了!

我还发现 jQuery-ui 选项卡事件的名称已从 1.8 版本更改为 1.9。在 1.8 中它是“显示”,而在 1.9 及更高版本中它是“激活”。

于 2013-08-26T07:26:43.693 回答