我不确定我错过了什么,所以我想把它扔到这里。以下是.ajaxComplete
方法无法正常工作。我需要将操作所来自的URL与我想要执行此代码的操作中的URL进行比较。
这是一个ASP MVC站点,因此我使用帮助程序从相应的控制器操作中获取URL。然后我使用settings
对象来确定来自当前Ajax调用源的URL的位置(我在这个页面上有一对,所以需要使用它来区分)。
从屏幕截图中可以看出,url
变量和settings.url
都包含相同的值。我还设置了一个警报来检查每个的长度,并且警报以两个35
的长度返回。
然而......这段代码通常会失败if
条件(我无法触发alert("here")
)。我对jQuery比较新,所以我想知道这是否是比较两个字符串的正确方法?仅供参考 - 我最初写的条件是
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");
});
修改
以下是在Chrome控制台中评估(settings.url == url)
的屏幕截图
以下是测试alert
alert(url.length + " " + settings.url.length);
答案 0 :(得分:4)
网址中存在拼写错误
请查看
<强>传送强>
<强> Tranmsission 强>
答案 1 :(得分:0)
只是一个猜测,但为什么不尝试检查它们的空白......我不确定它是否会被视为长度的一部分。
我以前遇到过类似的问题,并且会成为我要检查的下一个地方。此链接可能有所帮助:Replace multiple whitespaces with single whitespace in JavaScript string