0

おそらくあなたは私ができない何かを見つけることができます:

これは私のコードです

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が定義されていない場合は、2番目のケースに進むか、失敗した場合でもアラートをスローします。

私がここで間違っていることは明らかですが、誰かが見ることができますか?

ありがとう

ジャック

4

3 に答える 3

2

true / falseをテストしているため、3番目の条件はヒットしません。それを削除して、次のようにします。

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に等しい場合、これには、以下で行う元の関数への更新が必要です)。

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);
}

私はそれをテストしていませんが、それはそれを修正する必要があると思います

于 2013-03-19T10:05:16.823 に答える
1

jQuery.urlParam('returnview') 値が設定されていない場合は、を取得することを確認してくださいundefined

試すjQuery.urlParam('returnview') === undefined

この投稿もチェックしてください:エスケープされたURLパラメータを取得する

于 2013-03-19T09:55:46.127 に答える
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"目的の部分を括弧で囲んでキャプチャし、2番目の一致(最初のインデックス)を取得します。一致配列を逆参照する前に、それがnullでないことを確認してください。

jQuery.urlParam = function(name){
    var re = RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = window.location.href.match(re);
    return results ? results[1] : null;
}
于 2013-03-19T10:13:52.140 に答える