Как передать переменную с jquery в php
Здравствуйте! Сразу скажу - я пока очень плохо разбираюсь и в jquery и в php, поэтому прошу, по возможности, дать ответ понятный для профана.
Нужно передать переменную с jquery в файл php при нажатии вкладки. При нажатии первой вкладки, одно значение переменной, при нажатии второй вкладки другое значение этой же переменной. У меня скрипт примерно такой. $(document).ready(function() { $('div.box2').hide(); // Если пользователь кликнул на секцию 1 $('ul.tabs li.current1).click(function() { $('div.box2').hide(); $('div.box1').show(); Здесь нужно отправить в этот файл - (сайт.ru/файл.php) переменную x - со значением 1 }); // Если пользователь кликнул на секцию 2 $('ul.tabs li.current2').click(function() { $('div.box1).hide(); $('div.box2').show(); Здесь нужно отправить в этот файл - сайт.ru/файл.php) переменную x - со значением 2 }); }); Подскажите, пожалуйста, как это сделать? |
Передача параметра методом GET
$.get( 'jquery.php', { one: 'one', php: 'php', jquery: 'jquery' }); то есть передаешь файлу jquery.php параметры one с значение one и т.д. то есть можно повесить обработчик на все вкладки например если вкладки три и у каждой есть в css стиле свой ID три вкалдки id=a1 id =a2 и id =a3 $('#a1').click(function() { // это обработчик события клика на вкладке с id a1 $.get( 'jquery.php', { id: 'a1'}); // отправка запроса get ом $('#a2').hide(); $('#a3').hide(); }); и аналогично для остальных вкладок, но лучше однако сделать функцию которая принимает параметр и уже исходя из него отправляет запрос и скрывает все элементы кроме нужного. если что то не работает или работает не так , пиши. |
Если я правильно понял, Вы предлагаете написать так:
$('.current1).click(function() { $('div.box2').hide(); $('div.box1').show(); $.get( 'fail.php', { one: 'one' }); $('.current2').click(function() { $('div.box1).hide(); $('div.box2').show(); $.get( 'fail.php', { one: 'two' }); У меня так не работает: В fail.php для проверки написано так: echo 'Первая переменная: '.$_GET[one]; Результат: Первая переменная: |
1, При нажатии скрываются вкладки?
это для теста работы обработчика! 2. если нет то все нужно поместь в $(document).ready(function() { Здесь вставляете то что Вы написали, то есть обработчики кликов }); 3. Если вкладки таки скрываются , то следующее В php лучше так if (isset($_GET['one'])) { echo ("Все ок"); }else{ echo ("Отстой"); } и вариант отправки 2 jQuery.get( url, [data], [callback],[type] ) - загружает страницу, используя GET-запрос. url - адрес страницы содержимое которой надо загрузить [data] - необязательный параметр, данные которые надо передать загружаемой странице(в форме массива). По умолчанию (без [data]) выполняется как GET-запрос, однако, если будут переданы данные, выполнится как POST-запрос. [callback] - функция, которая будет запущена когда данные буду подгружены. [type] - тип данные которые возвращает URL. Возможные варианты: "xml", "html", "script", "json", "jsonp" или "text". XML - идет загрузка XML файла, разбор файла делает jQuery HTML - стандарт(по-умолчанию) SCRIPT - загружается JAVASCRIPT-код TEXT - обрабатывается как PLAIN TEXT (зачем?) JSON, JSONP - мы не рассматриваем, для новичков это нереально круто! Также у callback-функции появился второй параметр textstatus - содержащий отладочную информацию о загрузке url. Возможные значения textStatus: "timeout" - таймаут, возможно было превано соединение с сервером или компьютер отключился от интернета (да и такое бывает) "error" - ошибка, просто ошибка "notmodified" - URL уже загружался и с тех пор не изменился "success" - URL успешно загружен "parsererror" - URL загружен про при его обработке возникла ошибка, при типа данных XM ЕСЛИ ВСЕ РАВНО НИЧЕГО НЕ ВЫЙДЕТ ТО ОПИШИ ЧТО КОНКРЕТНО НУЖНО, Я ВЕЧЕРОМ ОТВЕЧУ 100% и все будет, ХОРОШО |
Спасибо за советы. Но, пока не работает - "Отстой" получается. Вкладки скрываются при нажатии.
Конкретно описываю что есть сейчас и что нужно сделать: 1. Сейчас есть две вкладки. Они работают для переключения рубрикатора ("По алфавиту" и "По популярности"). Сейчас это осуществлено таким образом, что jquery подгружает два объемных файла, один с сортировкой рубрик по алфавиту, другой с сортировкой по популярности (подключение файлов инклудом). Но эти файлы отличаются между собой только одной строчкой. 2. Вот у меня и возникла мысль: "А нельзя ли использовать только один файл где бы было прописано условие: Если переменная x=1, то сортировка по алфавиту, если переменная x=2, то сортировка по популярности. 3. Мне кажется правильным решением является создание переменной x в скрипте, при нажатии пользователем на вкладку, передача необходимой переменной в файл с рубрикатором. Я правильно думаю (если да, то как это правильно сделать?), или существует другое решение? |
Вечером отпишу. только вопрос
Получается то что возращает php должно вставляться на страницу с вкладками?(это больше риторический вопрос) Если нужно просто подгружать 1 из 2 имеющихся , то это элементарно, не нужно php. вечером напишу, где то после 19.30 Сделаю исходный пример.Так что держите связь. |
$("#ВАША ВКЛАДКА КУДА БУДЕТ ЗАЛИВАТЬСЯ ФАЙЛ").load("fail.php", {one: one}); php будет генерить то что выводить и как ответ будет заливаться. Работает на фтп во всех браузерах. А если прост оподгрузить один из файлов , то $("#ВАША ВКЛАДКА КУДА БУДЕТ ЗАЛИВАТЬСЯ ФАЙЛ").load("Тут путь к загружаемому файлу"); Вот так должно работать, конечно если передача параметра обязательная , то первый вариант , если вдруг и он не работате, то 100% выложу исходник. Самому интересно. |
Я думаю, так не получиться сделать то, что я хочу.
Я наверное, изначально неправильно задачу описал (из-за собственного незнания). Попробую написать подругому: Сейчас у меня есть вкладки: <div class="section"> <ul class="tabs"> <li class="current">По алфавиту</li> <li>По популярности</li> </ul> <div class="box visible"><? include ("./rubrikator.php");?> </div> <div class="box"><? include ("./rubrikator_f.php");?> </div> </div> за переключение вкладок сейчас отвечает скрипт: (function($) { $(function() { $('ul.tabs').delegate('li:not(.current)', 'click', function() { $(this).addClass('current').siblings().removeClass ('current') .parents('div.section').find('div.box').hide().eq( $(this).index()).fadeIn(150);return false; }) }) })(jQuery) Но можно и по другому написать, например как я выше писал. Главное чтобы задачу получилось решить. Так как файл rubrikator.php отличается от файла rubrikator_f.php только одной строчкой: $r = $db->query ( "SELECT * FROM $db_category $sql ORDER BY category " ); в файле rubrikator.php $r = $db->query ( "SELECT * FROM $db_category $sql ORDER BY fcounter DESC" ); в файле rubrikator_f.php Мне бы хотелось чтобы был только один файл rubrikator.php в котором каким то образом должно быть описано условие: Если пользователь нажал на вкладку 1, то r= .... ORDER BY category Если пользователь нажал на вкладку 2, то r= .... ORDER BY fcounter DESC Как это сделать? |
$("#ВАША ВКЛАДКА КУДА БУДЕТ ЗАЛИВАТЬСЯ ФАЙЛ").load("fail.php", {one: one}); такой вариант , главное что бы пхп отлавливал передачу параметра. Попробуйте проверить на всякий случай и в POST и GET Если получаете , то дальше if ($_POST[one]=='one') // или get { } else { } Самое главное что бы доставить значение one Оно же получается? В любом случае сегодня сделаю и вечером выложу . Будет работать так : отправка запроса в файл пхп формирование нужной страницы загрузка во вкладку нужной страницы До вечера тогда |
они нашли друг друга: певица2 и некий номер :D
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Часовой пояс GMT +3, время: 05:02. |