Выпадающее меню при изменении сделать JQuery функцию и SQL-запрос - PullRequest
1 голос
/ 16 февраля 2012

Я пытаюсь получить SQL-запрос для запуска в выпадающем меню.Вот что у меня есть:

<script>
$('#templateid').change(function(DoUpdateOnSelect) {
$.post('page.edit.php?page_id=(-->Need help in getting this id from the page url<--)&template='+this.options[this.selectedIndex].value);
});
</script>

И выпадающий список:

<select name="templateid" id="templateid" onchange="DoUpdateOnSelect">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>

page.edit.php содержит условия, которые будут выполнять запрос sql, если он обнаружитидентификатор страницы и шаблон в URL.Значение параметра шаблона захватывается с помощью jquery (пожалуйста, дайте мне знать, если эта часть настроена неправильно в jquery) из выпадающего меню select.Что я не могу понять, так это как извлечь параметр page_id из текущего URL страницы и вставить его в функцию, чтобы page.edit.php? Page_id = 1 & template = Home был правильно выведенным URL.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.Заранее спасибо.

РЕДАКТИРОВАТЬ: НА ОСНОВЕ ОТВЕТА НИЖЕ:

function querystring(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
  return "";
else
  return results[1];
}
$('#templateid').change(function() {
   var page_id = querystring('page_id');
   var url = '?VIEW=EDITPAGE&linklabel='+page_id+'&template='+(this.options[this.selectedIndex].value);
$.post(url);
});

НЕТ ИЗМЕНЕНИЙ, КОГДА Я ВЫБИРАЮ В ВЫБРАТЬ В МЕНЮ DROP DOWN

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

для получения page_id из URL вы должны использовать функцию типа

function querystring( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

тогда вы можете получить его с помощью

var page_id = querystring('page_id');

Итак, ваш обработчик onchange будет выглядеть примерно так:

$('#templateid').change(function() {
   page_id = querystring('page_id');
   var url = 'page.edit.php?page_id='+page_id+'&template='+this.options[this.selectedIndex].value);
   $.post(url, function(response){
      //your logic here
   });
});

О, и, пожалуйста, удалите атрибут onchange из выбранной разметки:

<select name="templateid" id="templateid">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>
1 голос
/ 16 февраля 2012

Попробуйте использовать этот плагин </p> <pre><code>$.extend({ getUrlVars: function(){ var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }, getUrlVar: function(name){ return $.getUrlVars()[name]; } });

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