JavaScript URL重定向: Is there an issue with this code?

标签 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';
} 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”URL 中定义了“returnview”,则它可以正常工作。 但是,如果没有定义 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'; 
} 

然后让我们将变量移到 if 之外并专门检查 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);
}

我还没有测试过,但我认为应该可以修复它

关于JavaScript URL重定向: Is there an issue with this code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15496097/

相关文章:

javascript - 使用 jQuery 选择文本输入框中的特定位置

javascript - 如何在 Bootstrap 3 日期/时间选择器小部件中仅使用时间选择器,并添加格式字符串

javascript - 当可折叠 block 打开 Jquery Mobile 时显示加载动画

javascript - 将新属性添加到另一个具有不同长度的数组的对象数组中,因此一旦数组完成迭代,它将再次从第一个开始

javascript - 将循环结果更改为在 javascript/Jquery 中反转顺序

javascript - AJAX/javascript 第二次无法正常工作

javascript - 如何通过 jQuery.ajax 将 JavaScript 数组发送到 PHP?

javascript - jQuery:单击*仅*此元素

javascript - 将 rowdata 标记从 javascript 传递到 servlet

javascript - fade通过 id 切换 div 容器