2013-03-05 4 views
0

Я пытаюсь передать две переменные из ссылки на функцию jquery ajax. Но я не знаю, как это сделать.как передать переменную php из ссылки на функцию jquery ajax

У меня есть ссылка с двумя идентификаторами. 1. rowid & 2nd. BookID. Мне нужно передать эти два id в мою функцию jquery.

Пожалуйста, помогите мне, как я могу это сделать.

`//cart item displaying in a for each loop , each row have a 'remove' link with two id 
//say i have $id='4dsf2323' & $bid='43' now i have to pass these two ids to my jquery function on click of a link  


<a id="removeid" >Remove item from cart link</a>` 

Моя JQuery функция

<script> 
     $('removeid').click(function(e) { 
     // prevent the default action when a nav button link is clicked 
     e.preventDefault(); 

       //HOW TO GET HERE THOSE TWO IDS FROM MY ABOVE LINK ON CLICK EVENT 

     // ajax query to retrieve the HTML view without refreshing the page. 
     $.ajax({ 
     type: 'get', 
     url: '/path/to/your/controller/method', 
     dataType: 'html', 
     success: function (html) { 
      // success callback -- replace the div's innerHTML with 
      // the response from the server. 
      $('#yourDiv').html(html); 
     } 
     }); 
    }); 

    </script> 

*********** ************** Обновление Вывод выглядит следующим образом enter image description here

+0

hmm, где находится второй идентификатор? Каждый элемент html может иметь только один идентификатор. Просьба уточнить, что вам нужно, и показать нам ваш html-макет. Кроме того, ваш '$ ('removeid'). Click (function (e) {' не будет работать, он должен быть переписан как '$ ('# removeid'). Click (function (e) {' – varnie

ответ

7

Как об использовании jQuery's .data() functionality? Добавить HTML как это:

<a id="removeid" data-id="<?php echo $id;?>" data-bid="<?php echo $bid;?>">Remove item from cart link</a> 

А затем получить с .data(), как это:

$('removeid').click(function(e){ 
    e.preventDefault(); 

    var $aid = $('#removeid'), 
     id = $aid.data('id'), 
     bid = $aid.data('bid'); 

    // rest of the ajax stuff that uses the data 
}); 

должно работать нормально, as long as you don't use camelCase.

EDIT, потому что, по-видимому, удаленные ссылки находятся в цикле, и у них одинаковый идентификатор?

Установите элемент с классом:

<a class="RemoveClass" data-id="<?php echo $id;?>" data-bid="<?php echo $bid;?>">Remove item from cart link</a> 

И затем использовать $ (это) внутри функции мыши, чтобы захватить значение данных только элементы кликнули:

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

    var $this = $(this), 
     id = $this.data('id'), 
     bid = $this.data('bid'); 

    // rest of the ajax stuff that uses the data 
}); 

Если вы сделаете это правильно, он будет локализован по ссылке, которая была нажата.

В качестве побочного примечания я изменил синтаксис как более универсальный обработчик события .on(). Если вы хотите сделать что-то еще с этим элементом в будущем, например событие зависания или что-то еще, вы можете включить его с тем же .on() bind, а не создавать отдельное связывание для другого события.

+0

, который является html5 .. он не будет поддерживаться во всех браузерах.я буду ждать другого ответа, если я не получу правильный ответ, тогда я буду применять функциональность 'data', как вы рекомендуете –

+0

из того, что я интерпретирую: http://stackoverflow.com/questions/6509841/jquery-data -not-retriving-data, если вы не используете случай с верблюдом, вы в порядке – PlantTheIdea

+0

что такое верблюжьей кейс? –

1

Передайте данные по ссылке с атрибутами данных:

  <a id="removeid" data-bid="<?=$bid?>" data-id="<?=$id?>" >Remove item from cart link</a> 

И ваш Jquery Javascript должен выглядеть следующим образом:

$('removeid').click(function(e) { 
     // prevent the default action when a nav button link is clicked 
     e.preventDefault(); 
     var id = $.data(this,'id'); // or $(this).attr('data-id'); 
     var bid = $.data(this,'bid'); // or $(this).attr('data-bid'); 

     // ajax query to retrieve the HTML view without refreshing the page. 
     $.ajax({ 
      type: 'get', 
      url: '/path/to/your/controller/method', 
      data: {bid:bid,id:id} 
      dataType: 'html', 
      success: function (html) { 
      // success callback -- replace the div's innerHTML with 
      // the response from the server. 
      $('#yourDiv').html(html); 
     } 
    }); 
}); 

или вы можете указать полный URL в HREF атрибут ссылки и просто:

<a id="removeid" href="/path/to/your/controller/method?bid=<?=$bid?>&id=<?=$id?>" >Remove item from cart link</a> 

и JS стали:

$('removeid').click(function(e) { 
     // prevent the default action when a nav button link is clicked 
     e.preventDefault(); 

     // ajax query to retrieve the HTML view without refreshing the page. 
     $.ajax({ 
      type: 'get', 
      url: $(this).attr('href'), 
      dataType: 'html', 
      success: function (html) { 
      // success callback -- replace the div's innerHTML with 
      // the response from the server. 
      $('#yourDiv').html(html); 
     } 
    }); 
+0

+1 и я бы сказал, что второй вариант - лучший подход – dakdad

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