0

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

タブショーからの呼び出しは常に機能します。ボタン クリックからの呼び出しは、デバッグ環境で実行すると機能しますが、イントラネットに展開すると機能しません。

Fiddler をチェックインしましたが、両方の呼び出しが要求と応答で同一です。

結果のクエリ文字列は、現在のフォーム全体が何らかの方法で送信された場合のように、非常に奇妙に見えます....

jQuery-ui は、タブ表示イベントが「非推奨」であり、「アクティブ化」が使用されるようになっていることに気付きました。アクティベートを試みましたが、うまくいきません。私のバージョンは jquery-ui-1.8.24.js と jquery-1.10.2.min.js です

4

1 に答える 1

0

ここに、この問題に対する私のフィードバックがあります。

全体の問題は、ボタンの type 属性の欠落であることが判明しました。デフォルトの動作は、ブラウザによって異なることが判明しました。Internet Explorer では、デフォルトは type="submit" です。ローカル マシンで実行している場合は何とか問題ありませんでしたが、リモート マシンでは機能しませんでした。type="button" を指定したので、すべて問題ありません。

また、jQuery-ui タブ イベントの名前がバージョン 1.8 から 1.9 に変更されたこともわかりました。1.8 では「show」、1.9 以降では「activate」です。

于 2013-08-26T07:26:43.693 に答える