Javascript url重定向:此代码是否存在问题?
也许你能发现一些我看不见的东西: 这是我的密码Javascript url重定向:此代码是否存在问题?,javascript,jquery,Javascript,Jquery,也许你能发现一些我看不见的东西: 这是我的密码 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';
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;
}
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return (results && results[0] ? results[0] : false);
}
现在,如果在我的“from”URL中定义了一个“returnview”,它就可以正常工作了。
但是,如果没有定义returnview,则应转到第二种情况,或者即使失败,也会抛出警报
有人能看出我做错了什么吗
谢谢
Jacques检查
jQuery.urlParam('returnview')下的内容
我很确定,如果不设置值,您将得到未定义的
请尝试jQuery.urlParam('returnview')==未定义
也可以查看这篇文章:检查jQuery.urlParam('returnview')下的内容。
我很确定,如果不设置值,您将得到未定义的
请尝试jQuery.urlParam('returnview')==未定义
也可以查看这篇文章:你的第三个条件永远不会被击中,因为你正在测试真/假,所以让我们删除它,留给你:
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';
}
然后让我们将变量移到ifs之外,并特别检查false(如果返回的值等于false,则需要对原始函数进行更新,我们将在下面执行此操作):
…最后,让我们修复原始函数:
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
}
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return (results && results[0] ? results[0] : false);
}
我还没有测试过它,但我认为应该可以解决它,因为你的第三个条件永远不会被击中,因为你正在测试真/假,所以让我们删除它,给你留下:
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';
}
然后让我们将变量移到ifs之外,并特别检查false(如果返回的值等于false,则需要对原始函数进行更新,我们将在下面执行此操作):
…最后,让我们修复原始函数:
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
}
jQuery.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
return (results && results[0] ? results[0] : false);
}
我还没有测试过它,但我认为应该修复它只需根据函数是否返回真实值有条件地设置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”
段。您只需在所需部分周围添加括号即可捕获该部分,然后获取第二个匹配项(第一个索引)。在取消引用匹配数组之前,请检查它是否为null:
jQuery.urlParam = function(name){
var re = RegExp('[\\?&]' + name + '=([^&#]*)');
var results = window.location.href.match(re);
return results ? results[1] : null;
}
只需根据函数是否返回truthy值有条件地设置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”
段。您只需在所需部分周围添加括号即可捕获该部分,然后获取第二个匹配项(第一个索引)。在取消引用匹配数组之前,请检查它是否为null:
jQuery.urlParam = function(name){
var re = RegExp('[\\?&]' + name + '=([^&#]*)');
var results = window.location.href.match(re);
return results ? results[1] : null;
}
+0.25对于“某物是道奇”警报,else if
应为else
。第三种情况永远不会发生。布尔表达式为true或false。你注意到了什么问题?你使用firebug吗?如果是,则在第一个窗口之前的console.debug('index.php?option=mycomponent&view='+ret+'&Itemid='+iid+'&lang=en')。location
并粘贴掉的内容。@imclickingmaniac他自己定义了它,请参阅post…+0.25了解dodge警报否则If
应该是else
。第三种情况永远不会发生。布尔表达式为true或false。你注意到了什么问题?你使用firebug吗?如果是,则在第一个窗口之前的console.debug('index.php?option=mycomponent&view='+ret+'&Itemid='+iid+'&lang=en')。location
并粘贴掉的内容。@imclickingmaniac他自己定义了它,请参阅post…它不能返回未定义的:最后一行返回结果[1]|0如果结果[1]
是未定义的,则code>返回0
。是的,我的错误。他发布了应该返回0但不会返回的函数。它不能返回未定义的:最后一行返回结果[1]|0如果结果[1]
是未定义的,则code>返回0
。是的,我的错误。他发布了应该返回0但不会返回的函数。jQuery.urlParam=function(name){var results=new RegExp('[\?&;]'+name+'=([^&;#]]*).exec(window.location.href);return(results&&results[0]?results[0]:false);}
此函数工作正常。非常小,正确:(结果和结果[0])?结果[0]:0代码>在末尾。哦,在firebug中启用控制台。看起来你没有打开:)谢谢我点击疯子。。。是这样匆忙完成的:)谢谢@Lewis和imclickingmaniac——组合成功了。现在正在正确重定向。jQuery.urlParam=function(name){var results=new RegExp('[\\?&;]'+name+'=([^&;\]*]).exec(window.location.href);return(results&&results[0]?results[0]:false);}
此函数工作正常。非常小,正确:(结果和结果[0])?结果[0]:0代码>在末尾。哦,在firebug中启用控制台。看起来你没有打开:)谢谢我点击疯子。。。是这样匆忙完成的:)谢谢@Lewis和imclickingmaniac——组合成功了。现在正确重定向。