2011-09-05 23 views
0

JavaScriptの機能をURLのパラメータの値をテキストボックスに入力した値で変更しようとしています。なぜなら私はコードデザイナーだがグラフは一つだからだ。 これは私が「市」のパラメータを変更する必要があるURLです:URLのパラメータの値を変更する

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

私はこのようなjQueryを使ってMySQLのクエリを介して入力テキストボックス内のデータを生成しています:

<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> 

どのようにすることができます選択した値のパラメータを変更しますか? もう一度、謙虚なデザイナーに助言してください。 ありがとうございました!

L.E. 

私は、回避策を作ったこの1をchangeURI()関数を変更しました:StackOverflowの上で発見

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('&'); 
    } 

} 

と$ .result()関数で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を返す必要があります。次に、「?」を分割します。 2番目の配列要素を取ろうとすると、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

関連する問題