2011-09-05 81 views
0

我正在嘗試使javascript函數更改URL中參數的值,並在文本框中輸入值,但沒有運氣。那是因爲我注意到了一個代碼設計器,而是一個圖表。 這是我需要改變「城市」參數中的URL:更改URL中的參數值

<input type='text' id='city' name='city' style="width:190px; align:left;" value="<?php echo $city; ?>" /> </td> 
<script type="text/javascript"> 
//change the value of parameter in the URL function 
function changeURI(key, value) { 
var query = document.location.search.substring(1); 
var query_q = query.split("?"); 
var vars = query_q[1].split("&"); 
for (var i = 0; i < vars.length; i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == key) { 
     vars[i] = pair[0] + "=" + value; 
    } 
} 
return vars.join("&"); 
} 
//jQuery making the auto-suggestion query for the input ID 
$().ready(function() { 
$("#city").autocomplete("core/exp_city.php", { 
    width: 340, 
    matchContains: true, 
    selectFirst: false 
}).return(changeURI("city", this.value})); 
}); 
</script> 

如何:

http://server/ad_new_customer.php?&city=&uri=http://server/adauga_exp.php 

我通過My​​SQL查詢使用jQuery像這樣生成的文本框中輸入數據我讓它改變參數值在選定的值? 請再次提醒一位不起眼的設計師。 謝謝!

L.E. 

我做了一個解決辦法,這一個改變changeURI()函數:

function changeURI(key, value) 
{ 
key = escape(key); value = escape(value); 
var kvp = document.location.search.substr(1).split('&'); 
var i=kvp.length; var x; while(i--) 
{ 
    x = kvp[i].split('='); 
    if (x[0]==key) 
    { 
      x[1] = value; 
      kvp[i] = x.join('='); 
      break; 
    } 
} 
if(i<0) { 
    kvp[kvp.length] = [key,value].join('='); 
    }else{ 
//this will reload the page, it's likely better to store this until finished 
document.location.search = kvp.join('&'); 
    } 

} 

發現在計算器上,並從jQuery查詢使用$。結果()函數調用它:

<script type="text/javascript"> 
$().ready(function() { 
$("#city").autocomplete("core/exp_city.php", { 
    width: 340, 
    matchContains: true, 
    selectFirst: false 
}).result(function() {changeURI("city",this.value)}); 
}); 

</script> 

回答

0

在你的例子中,document.location.search.substring(1)已經擺脫了問號:它應該返回&city=&uri=http://server/adauga_exp.php。然後做一個分裂「?」並試圖採取第二個數組元素應該返回undefined,因爲不再有任何「?」字符。此時直接跳到var vars = query.split("&"),其餘的對我來說看起來沒問題。

+0

謝謝@sthobrien,你是對的,我跳過了query_q變量,但仍然沒有奏效。無論如何,我已經設法與另一個changeURI()函數一起工作,它確實工作。謝謝。 – sealview

1

你得到了什麼錯誤?你得到任何JavaScript錯誤?此外,嘗試改變你的代碼的一些東西一樣

url = url.replace(new RegExp("city=", 'g'), "city="+value). 

而且,寫在問題中的URL不應城參數之前有&作爲第一個參數與?啓動,因此該URL應該是:

http://server/ad_new_customer.php?city=&uri=http://server/adauga_exp.php 

檢查是否是這個問題。

+0

嗨@Ankit,其實它並沒有給我任何錯誤,只是它沒有做出所需的更改,我修改了第一個參數,只用「?」開始,但沒有運氣。我不知道如何實現替換(新的RegExp()),我已經讀過它比其他解決方案慢。謝謝。 – sealview