也许你可以发现我不能发现的东西:
这是我的代码
if(jQuery.urlParam('returnview')) {
var ret = jQuery.urlParam('returnview');
var iid = jQuery.urlParam('iid');
window.location = 'index.php?option=mycomponent&view='+ret+'&Itemid='+iid+'&lang=en';
} else if(!jQuery.urlParam('returnview')){
window.location = 'index.php?option=mycomponent&view=myview&Itemid=380&lang=en&sent=1';
} else {
alert('something is dodge');
}
这是功能:
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
}
现在,如果我的'from'网址中定义了'returnview',它就可以了。 但是,如果没有定义返回视图,它应该转到第二种情况,或者即使失败,也要发出警报。
任何人都可以看到任何明显我在这里做错的事吗?
谢谢
雅克
答案 0 :(得分:2)
你的第三个条件永远不会受到影响,因为你正在测试真假,所以让我们删除它,留下你:
if(jQuery.urlParam('returnview')) {
var ret = jQuery.urlParam('returnview');
var iid = jQuery.urlParam('iid');
window.location = 'index.php?option=mycomponent&view='+ret+'&Itemid='+iid+'&lang=en';
} else{
window.location = 'index.php?option=mycomponent&view=myview&Itemid=380&lang=en&sent=1';
}
然后让我们将vars移到ifs之外并特别检查false(如果返回的值等于false,这需要更新你原来的函数,我们在下面做):
var ret = jQuery.urlParam('returnview');
var iid;
if(ret === false) {
window.location = 'index.php?option=mycomponent&view=myview&Itemid=380&lang=en&sent=1';
} else{
iid = jQuery.urlParam('iid');
window.location = 'index.php?option=mycomponent&view='+ret+'&Itemid='+iid+'&lang=en';
}
...最后让我们修复你原来的功能:
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return (results && results[0] ? results[0] : false);
}
我没有测试过,但我认为应该解决它
答案 1 :(得分:1)
检查jQuery.urlParam('returnview')
下的内容
我很确定如果未设置值,您将获得undefined
。
尝试jQuery.urlParam('returnview') === undefined
另请查看此帖子:Get escaped URL parameter
答案 2 :(得分:0)
只需根据函数是否返回真值来有条件地设置url参数:
var ret = jQuery.urlParam('returnview');
var iid = jQuery.urlParam('iid');
var view = ret || "myview";
var id = iid || "380";
window.location = 'index.php?option=mycomponent&view='+
view + '&Itemid=' + id + '&lang=en';
对于urlParam
功能,您需要确保仅捕获参数本身,而不是整个"&abc=xyz"
段。您只需在所需部分周围添加括号以捕获它,然后进行第二次匹配(第一个索引)。在取消引用匹配数组之前,请检查它是否为空:
jQuery.urlParam = function(name){
var re = RegExp('[\\?&]' + name + '=([^&#]*)');
var results = window.location.href.match(re);
return results ? results[1] : null;
}