2017-03-03 91 views
0

我已經構建了兩個函數,它們分開工作(當另一個被刪除時)但不一起工作。總體目標是,當一個人選擇他們希望每頁看到的結果數量時,這會重新加載頁面,並將該值放入url中,然後使用get in php進行檢索;然後在新頁面上將下拉菜單中的選定值設置爲觸發重新加載的值。衝突的jquery函數

jQuery的

$(document).ready(function(){ 
    //the first section takes the value from the php script and then selects the option if it's not null - this works fine on it's own 

    var data = "<?php echo $rp;?>"; 
    if (data){ 
     $("#bo2 option[value="+data+"]").attr('selected', 'selected'); 
    } 

    //this too works fine on it's own but not with the above 
    $('#bo2').change(function(){ 

     var opt = $(this).val(); 
     var url = "sales.php?results="; 
     var newurl = url + opt; 
     window.location.replace(newurl); 
    }); 
}); 

在一起時,第一工作正常,因爲它重新選擇如果說,我把?results=50sales.php後的正確值,但隨後jQuery的觸發重載不起作用。我究竟做錯了什麼?

只是爲了澄清。第一頁稱爲「sales.php」,下拉菜單中當前選擇的值爲「10」,25和50爲其他選項。當我點擊另一個數字時,jquery不起作用。但是,我應該在網址中鍵入結尾「?result = 50」,例如,它可以工作;下拉菜單現在顯示50;當我點擊十,網址更新,並下拉顯示十也;那麼問題在於,它們似乎只是在開始時纔會發生衝突,就像它一樣。

似乎問題可能涉及jQuery如何處理php。舉個例子,其工作原理如下第一個例子,然後第二這不:

1)

$(document).ready(function(){ 

$('#bo2').change(function(){ 

var opt = $(this).val(); 

var url = "sales.php?results="; 

var newurl = url + opt; 

window.location.replace(newurl); 

}); 

}); 

2)這種變化的功能但是不會觸發因爲包含的頁面重載php定義的jquery變量。

$(document).ready(function(){ 

var data = "<?php echo $rp;?>"; 


$('#bo2').change(function(){ 

var opt = $(this).val(); 

var url = "sales.php?results="; 

var newurl = url + opt; 

window.location.replace(newurl); 

}); 

}); 

回答

0

這實現了我想要的東西(我不知道php是否構成問題)。功能從這裏 - Get url parameter jquery Or How to Get Query String Values In js

另外,我很驚訝沒有人比我更有經驗,並沒有指出什麼似乎也有所作爲;實際上原始帖子中的「第一個」功能需要第二個。

因此,當用戶點擊選擇菜單中的一個選項時,下面將重新加載一個新頁面,其中包含預定義選項,用於顯示每頁要查看的結果數量;這個值將顯示在url中,重要的是,選擇菜單的當前選擇值現在也是這個值;這很重要,以便如果用戶返回到原始視圖數,則change()函數仍然可以工作。

$(document).ready(function(){ 

var getUrlParameter = function getUrlParameter(sParam) { 
var sPageURL = decodeURIComponent(window.location.search.substring(1)), 
    sURLVariables = sPageURL.split('&'), 
    sParameterName, 
    i; 

for (i = 0; i < sURLVariables.length; i++) { 
    sParameterName = sURLVariables[i].split('='); 

    if (sParameterName[0] === sParam) { 
     return sParameterName[1] === undefined ? true : sParameterName[1]; 
    } 
} 
}; 



var data = getUrlParameter('results'); 

$('#bo2').change(function(){ 

var opt = $(this).val(); 

var url = "sales.php?results="; 

var newurl = url + opt; 

window.location.replace(newurl); 
}); 

if (data) 
    { 
     $("#bo2 option[value="+data+"]").attr('selected', 'selected'); 
    } 

});