изменить значение параметра в URL - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь создать функцию javascript, чтобы изменить значение параметра в URL-адресе на значение, введенное в текстовое поле, но безуспешно. Это потому, что я обращаю внимание на дизайнер кода, но на график. это URL, где мне нужно изменить параметр «Город»:

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

Я генерирую данные в текстовом поле ввода с помощью запроса MySQL с помощью jQuery, например:

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

Я сделал обходной путь, изменил функцию 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('&'); 
    }

}

Найден в StackOverflow и вызывается из запроса jQuery с помощью функции $ .result ():

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

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Какую ошибку вы получаете? Вы получаете какую-либо ошибку JavaScript? Кроме того, попробуйте изменить свой код на что-то вроде

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

Кроме того, URL, указанный в вопросе, не должен иметь & перед параметром city, поскольку первый параметр начинается с ?, поэтому URL должен быть:

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

Проверьте, была ли это проблема.

0 голосов
/ 05 сентября 2011

В вашем примере document.location.search.substring(1) уже избавляется от знака вопроса: он должен вернуть &city=&uri=http://server/adauga_exp.php. Затем делим раскол на "?" и попытка взять второй элемент массива должна вернуть undefined, потому что больше нет "?" персонажи. Перейдите прямо к var vars = query.split("&") в этот момент, и все остальное выглядит хорошо для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...