2016-08-08 3 views
0

Я пытаюсь создать серию кнопок, которые обновляют переменную $ _GET ['year'] моего сайта. Я хочу, чтобы кнопки для работы на этих страницах:

  • example.com
  • example.com/?search=foo
  • example.com/?search=foo & год = 2015.

Так, например, если я нажал на <a>2016</a> мой «год» тег будет обновляться, чтобы year=2016 и веб-страница будет показывать результаты поиска или все из того же года. Я попытался с помощью JQuery AJAX выглядеть примерно так:

   <ul class="dropdown-menu dateDropdown"> 
        <li><a>2016</a></li> 
        <li><a>2015</a></li> 
        <li><a>2014</a></li> 
       </ul> 


      <script> 
       $(document).ready(function() { 
        $(".dateDropdown>li>a").each(function() { 
         $(this).click(function() { 
          alert("pressed"); 
          $.get({ 
           url: "index.php", 
           data: $(this).html(), 
           callback: alert("sent") 
          }); 
         ;}) 
        ;}) 
       ;} 
      </script> 

В настоящее время я получаю «прессованный» и «послал» предупреждение, но веб-страница не обновляется. Я решил, что, возможно, мне удастся заставить его работать, используя window.location и regex, чтобы изменить или добавить «год» в URI, но этот способ был бы намного опрятным. Любые идеи?

+0

'data: {year: $ (this) .html()}' – apokryfos

+0

Ожидаете ли вы, что контент на вашей странице изменится? Есть ли конкретная причина, по которой вы хотите изменить URL? Не совсем ясно, что именно вы пытаетесь выполнить. –

+0

Если вы хотите обновить 'click', то почему вы не используете событие' click'? – Saurabh

ответ

1

Посмотрите на jQuery.get params.

В вашей ситуации, это было бы что-то вроде:

$(".dateDropdown>li>a").each(function(index,elem){ 
    $(elem).click(function(){ 
     alert('Pressed'); 
     $.get('url', {search:'foo', year: $(this).text() }).done(function(){ alert('Done!')}) 
    }) 
}) 
+0

Спасибо за ответ! Я все еще не могу получить URI для обновления с помощью этого кода. Я заменил 'url' на '/index.php' (так как там код отправляется и получает). Я получаю «сделано!». хотя. Кроме того, какова цель параметров (индекс, элем)? –

+0

jQuery каждый выполняет итерацию по всем (ранее) сопоставленным элементам и представляет их в обратном вызове с помощью 'index' - количество элементов в коллекции и' elem' - единственный элемент. Конечно, эти два вара, которые вы можете назвать, как бы вы ни хотели. –

+0

Если вы получаете 'alert ('Done!')' Это означает, что вызов успешно. Что плохого? –

0

измените сценарий

<script> 
    $(document).ready(function() { 
     $(".dateDropdown>li>a").each(function() { 
      $(this).click(function() { 
       alert("pressed"); 
       $year=$(this).html(); 
       $.ajax({ 
        method: 'post', 
        url: "query.php", 
        data: 'year='+$year, 
        callback: alert("sent") 
        success: function(e){ 
        $('html').html(e); 
        } 
       }); 
      ;}) 
     ;}) 
    ;} 
</script> 

скопировать содержимое index.php в query.php и сделать содержание index.php

<html> 
    <?php include 'query.php'; ?> 
</html> 
Смежные вопросы