何が欠けているのかわからないので、これをここに投げると思いました。以下は、.ajaxComplete
正しく機能しない方法です。アクションの元の URL と、このコードを実行したいアクションの URL を比較する必要があります。
これは ASP MVC サイトなので、ヘルパーを使用して適切なコントローラー アクションから URL を取得します。次に、settings
オブジェクトを使用して、現在の Ajax 呼び出しのソースから URL がどこにあるかを判断します (このページにはいくつかあるので、これを使用して区別する必要があります)。
スクリーン ショットからわかるように、url
変数 との両方settings.url
に同じ値が含まれています。35
また、それぞれの長さをチェックするアラートを設定すると、アラートは両方の長さで返されます。
ただし...このコードは定期的にif
条件に失敗します(起動できませんalert("here")
)。私はjQueryに比較的慣れていないので、これが2つの文字列を比較する正しい方法であるかどうか疑問に思っていますか? 参考までに-私はもともと条件を
if(settings.url == url)
しかし、私もこれを通過させることができませんでした。
//Tie completion of GetChannel Ajax call to execution of
//getDrmTerritory instead of using .change event on
//Market Segment drop down
$(document).ajaxComplete(function (event, xhr, settings) {
var url = '@Url.Action("GetChannel", "AgentTranmsission")';
alert(url.length + " " + settings.url.length);
alert("about to check");
if (String(settings.url) == String(url)) {
alert("here");
var channel = $.trim($('#channelName').text());
if ($('#AlignmentM:radio').is(':checked')) {
if ($('#MailingZip').val() != "" && $('#MailingState').val() != "" && channel != "") {
getDrmTerritory($('#MailingZip').val(), $('#MailingState').val(), channel);
} else if (channel != "") {
$('#territoryName').text("");
$('#Region').val("");
}
}
else if ($('#AlignmentL:radio').is(':checked')) {
if ($('#LocationZip').val() != "" && $('#LocationState').val() != "" && channel != "") {
getDrmTerritory($('#LocationZip').val(), $('#LocationState').val(), channel);
} else if (channel != "") {
$('#territoryName').text("");
$('#Region').val("");
}
}
}
alert("end");
});
編集
(settings.url == url)
これはChromeのコンソールで評価されたスクリーンショットです
これがalert
そのテストですalert(url.length + " " + settings.url.length);