2012-12-19 3 views
0

PHP-разработчик, нуждающийся в помощи JS! Я довольно новичок в JS и не могу понять это.Параметр jQuery Pass url для параметра отдельных параметров?

У меня есть небольшой плагин jQuery gSearchhttp://gsearch.scottreeddesign.com/index.html Выполняет поиск Google на вашей странице. Он не построен с возможностями POST/GET, вам нужно определить «термин поиска» в параметрах функций. Я пытаюсь изменить его.

У меня есть 2 страницы:

search.html содержит:

<form action="results.html"> 
    <input type="text" name="q" id="term"> 
    <input type="button" id="search_button" onclick="this.form.submit();"> 
</form> 

results.html содержит:

$("#search-results").gSearch({ 
    search_text : 'brian griffin', 
    count : 4, 
    site : 'wikipedia.org', 
    pagination : false 
}); 

и в теле:

<div id="search-results"></div> 

Теперь мне нужно получить поисковый запрос от формы и передать его в качестве переменной в .gSearch. Как я могу это сделать? Я вижу сообщения о том, как получить/вернуть параметр url, но я не могу найти объяснения, как превратить его в переменную и передать ее другой функции? Я могу сделать это, закрыв глаза чистым PHP, но я новичок в JS!

+0

Используйте location.search, он позволяет вам получать переменные GET в javascript .. – ppsreejith

+0

http://stackoverflow.com/questions/7825329/get-querystring-with-dojo/7825382#7825382 (Это показывает, dojo) –

ответ

0
$('form').on('submit', function(e){ 
    e.preventDefault(); //stop default form submit 
    $('#search-results').gSearch({ 
     search_text: $('#term').val(), //the term to search 
     count: 4, //how many 
     site: 'wikipedia.org', //a site to match the search against 
     pagination: false //whether or not to use pagination 
    }); 
}); 

Мы снимаем форму submit и останавливаем ее с помощью preventDefault(). После этого мы применяем gSearch к элементу с идентификатором search-results (к которому будут добавлены возвращаемые результаты). Мы определяем некоторые параметры в нашем объектном запросе. Этого должно быть достаточно.

0

Попробуйте

$('#search_button').on('click', function(e) { 
    e.preventDefault(); 

    var $search = $('#term').val(); 

    // Assign it to the gSearch 
    $("#search-results").gSearch({ 
     search_text: $search, 
     count: 4, 
     site: 'wikipedia.org', 
     pagination: false 
    }); 


});​ 
+0

У меня не было возможности проверить других, это был первый, и он работал отлично. Я лучше понимаю, как переменные работают на всех постах. Спасибо! –

-1

Если вы хотите, чтобы включить получить параметры в объект JSON, используйте этот

JSON.parse('{"' + decodeURI(location.search.substring(1)).replace(/&/g, "\",\"").replace(/=/g,"\":\"") + '"}') 
+0

Этот код неприятен, почему вы используете 'JSON.parse'? Вы также не используете 'decodeURIComponent' –

+0

Разве вы не читали мой комментарий? Я сказал тебе, почему я остановил это. Не нужно использовать 'JSON.parse', и вы не используете' decodeURIComponent'. Всякий раз, когда вы создаете строку JSON со своим кодом, вы, вероятно, делаете что-то, чего не следует –

0

Там нет встроенного способа читать пар ключ/значение в querystring в JavaScript. Для того, чтобы получить значение из строки запроса, parse location.search:

var searchTerms = ""; 
if (/\bq=([^&]+)/.test(location.search)) { 
    searchTerms = decodeURIComponent(RegExp.$1); 
} 
$("#search-results").gSearch({ 
    search_text : searchTerms, 
    count : 4, 
    site : 'wikipedia.org', 
    pagination : false 
}); 

Вы не можете прочитать значения POST на всех из JavaScript. Они доступны только на стороне сервера.

Смежные вопросы