Jump to content
  • 0

Передача переменных PHP из одного PHP-файла в другой с помощью ajax


Torawhite
 Share

Question

Здравствуйте! Необходимо передать две переменные без перезагрузки страницы при клике на элемент, на данный момент код имеет такой вид

var id = "<?php echo $row["id"];?>";var count_vk = "1";var count_fb = "1";var count_tw = "1";$(document).ready( function() {$("#share_wrap_vk").click(function(){$.ajax({type: 'POST',url: '/blocks/share_counter.php',data: ""});});$("#share_wrap_fb").click(function(){$.ajax({type: 'POST',url: '/blocks/share_counter.php',data: ""});});$("#share_wrap_tw").click(function(){$.ajax({type: 'POST',url: '/blocks/share_counter.php',data: ""});});});

нужно передать id и count_vk документу share_counter.php. count_vk,fb,tw необходимы только для того, чтобы понять, какое поле обновить в таблице базы данных . id получаю при загрузке страницы из бд. Суть скрипта - считать количество кликов на ссылку с конкретным идентификатором

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

почему data : пустой ?

именно там передается переменная

var id = "<?php echo $row["id"];?>";

var count_vk = "1";

var count_fb = "1";

var count_tw = "1";

//где то так

$.ajax({

url: "my.php",

type : "POST",

data : ({postVar1:id}),

success: function (data) {

alert(data);

}

....

....

Edited by riki
Link to comment
Share on other sites

  • 0
почему data : пустой ?именно там передается переменная  var id = "<?php echo $row["id"];?>";var count_vk = "1";var count_fb = "1";var count_tw = "1";//где то так             $.ajax({            url: "my.php",            type : "POST",            data : ({postVar1:id}),            success: function (data) {                     alert(data);            }........

Пусто, потому что я не знаю, как правильно вписать передачу двух переменных - корректный синтаксис

 

почему data : пустой ?именно там передается переменная  var id = "<?php echo $row["id"];?>";var count_vk = "1";var count_fb = "1";var count_tw = "1";//где то так             $.ajax({            url: "my.php",            type : "POST",            data : ({postVar1:id}),            success: function (data) {                     alert(data);            }........

Пусто, потому что я не знаю, как правильно вписать передачу двух переменных - корректный синтаксис. У Вас, так понимаю. там тоже прописана передача только одной переменной - id

 

Link to comment
Share on other sites

  • 0

 

почему data : пустой ?именно там передается переменная  var id = "<?php echo $row["id"];?>";var count_vk = "1";var count_fb = "1";var count_tw = "1";//где то так             $.ajax({            url: "my.php",            type : "POST",            data : ({postVar1:id}),            success: function (data) {                     alert(data);            }........

Пусто, потому что я не знаю, как правильно вписать передачу двух переменных - корректный синтаксис

 

почему data : пустой ?именно там передается переменная  var id = "<?php echo $row["id"];?>";var count_vk = "1";var count_fb = "1";var count_tw = "1";//где то так             $.ajax({            url: "my.php",            type : "POST",            data : ({postVar1:id}),            success: function (data) {                     alert(data);            }........

Пусто, потому что я не знаю, как правильно вписать передачу двух переменных - корректный синтаксис. У Вас, так понимаю. там тоже прописана передача только одной переменной - id

 

 

Предложили мне другой вариант, но довести до ума его не могу пока, чую, что это очень просто, но мне, как человеку далёкому от js на данный момент это сложно. Обработать переменные в обработчике на php для меня уже не сложно. При клике на кнопку у меня передаётся тип данных data-type="" (vk, fb, tw) Можно сделать что-то подобное

$(document).ready(function() {var id = "<?php echo $row['id'];?>";$('a[data-type="vk"']).each(function(){$('#share_wrap_vk').on('click', function(){$.post('/blocks/share_counter.php', {id: id,type: 'vk'success: function () {alert(id);});});});});
Link to comment
Share on other sites

  • 0

 

$('a[data-type=vk"]).each(function(){ $('#share_wrap_vk').on('click', function(){

 

Это что за издевательство то такое? О.О

 

Покажите ваш html кода с этими кнопками..

 

Издевательство от незнания. html код:

<div class="share_box"><a class="social_share" data-type="vk" title="Поделиться | ВКонтакте" id="share_wrap_vk"><span class="share_logo_vk"></span><span class="share_title">ПОДЕЛИТЬСЯ</span><span class="l-count"></span></a><a class="social_share" data-type="fb" title="Поделиться | Facebook" id="share_wrap_facebook"><span class="share_logo_facebook"></span><span class="share_title">ПОДЕЛИТЬСЯ</span><span class="l-count"></span></a><a class="social_share" data-type="tw" title="Поделиться | Twitter" id="share_wrap_twitter"><span class="share_logo_twitter"></span><span class="share_title">ПОДЕЛИТЬСЯ</span><span class="l-count"></span></a></div>

Скрипт, который показывает всплывающее окно шаринга:

$(document).on('click', '.social_share', function(){Share.go(this);});Share = {/*** Показать пользователю дилог шаринга в сооветствии с опциями* Метод для использования в inline-js в ссылках* При блокировке всплывающего окна подставит нужный адрес и ползволит браузеру перейти по нему** @example <a href="" onclick="return share.go(this)">like+</a>** @param Object _element - элемент DOM, для которого* @param Object _options - опции, все необязательны*/go: function(_element, _options) {varself = Share,options = $.extend({type: 'vk', // тип соцсетиurl: location.href, // какую ссылку шаримtitle: document.title},$(_element).data(), // Если параметры заданы в data, то читаем их_options // Параметры из вызова метода имеют наивысший приоритет);if (self.popup(link = self[options.type](options)) === null) {// Если не удалось открыть попапif ( $(_element).is('a') ) {// Если это <a>, то подставляем адрес и просим браузер продолжить переход по ссылке$(_element).prop('href', link);return true;}else {// Если это не <a>, то пытаемся перейти по адресуlocation.href = link;return false;}}else {// Попап успешно открыт, просим браузер не продолжать обработкуreturn false;}},// ВКонтактеvk: function(_options) {var options = $.extend({url: location.href,title: document.title}, _options);return 'http://vkontakte.ru/share.php?'+ 'url=' + encodeURIComponent(options.url)+ '&title=' + encodeURIComponent(options.title)+ '&noparse=true';},// Facebookfb: function(_options) {var options = $.extend({url: location.href,title: document.title}, _options);return 'http://www.facebook.com/sharer.php?s=100'+ '&p[title]=' + encodeURIComponent(options.title)+ '&p[url]=' + encodeURIComponent(options.url);},// Твиттерtw: function(_options) {var options = $.extend({url: location.href,title: document.title}, _options);return 'http://twitter.com/share?'+ 'text=' + encodeURIComponent(options.title)+ '&url=' + encodeURIComponent(options.url);},// Открыть окно шарингаpopup: function(url) {return window.open(url,'','toolbar=0,status=0,scrollbars=1,width=640,height=480');}}

Он как раз завязан на data-type. Но он ничего не считает. Нужно передать две переменные: одна - идентификатор статьи в базе данный, а вторая - переменную, которая будет нам сообщать, какую кнопку нажали и в каком столбце обновить ячейку в соответствии с идентификатором статьи. С php-фалом обработчиком у меня проблем не возникнет, нужно только передать информацию без перезагрузки страницы. Скрипт выше писался, конечно, не мной.

Link to comment
Share on other sites

  • 0
$(document).on('click', '.share_box a', function () {    var id = "<?php echo $row['id'];?>";    var shareType = $(this).data("type");    $.ajax({        url: "/blocks/share_counter.php",        type: "POST",        data: ({            postVar1: id,            postVar2: shareType        }),        success: function (data) {            alert(data);        }    });});

Ну примерно так передавать данные обработчику..  А по счёту кликов.. Я так понимаю запись в базу идёт после каждого клика? если так - то и считать ничего не надо. При получении данных обработчику достаточно получить ид и тип кнопки. После просто увеличивать значение в базе на 1.

Link to comment
Share on other sites

  • 0
$(document).on('click', '.share_box a', function () {    var id = "<?php echo $row['id'];?>";    var shareType = $(this).data("type");    $.ajax({        url: "/blocks/share_counter.php",        type: "POST",        data: ({            postVar1: id,            postVar2: shareType        }),        success: function (data) {            alert(data);        }    });});

Ну примерно так передавать данные обработчику..  А по счёту кликов.. Я так понимаю запись в базу идёт после каждого клика? если так - то и считать ничего не надо. При получении данных обработчику достаточно получить ид и тип кнопки. После просто увеличивать значение в базе на 1.

 

Да, по каждому клику обновляется значение ячейки (+1) А в <span class="l-count"></span> будет выводится содержимое нужной ячейки. Спасибо! Буду пробовать сейчас. Я так понимаю, что здесь не нужно даже создавать отельно код для клика по конкретной кнопке, всё завязано data-type и ссылках внутри .share_box.  Параллельно решил изучить матчасть по js, чтобы хотя бы примерно понимать код 

Link to comment
Share on other sites

  • 0

 

$(document).on('click', '.share_box a', function () {    var id = "<?php echo $row['id'];?>";    var shareType = $(this).data("type");    $.ajax({        url: "/blocks/share_counter.php",        type: "POST",        data: ({            postVar1: id,            postVar2: shareType        }),        success: function (data) {            alert(data);        }    });});

Ну примерно так передавать данные обработчику..  А по счёту кликов.. Я так понимаю запись в базу идёт после каждого клика? если так - то и считать ничего не надо. При получении данных обработчику достаточно получить ид и тип кнопки. После просто увеличивать значение в базе на 1.

 

Да, по каждому клику обновляется значение ячейки (+1) А в <span class="l-count"></span> будет выводится содержимое нужной ячейки. Спасибо! Буду пробовать сейчас. Я так понимаю, что здесь не нужно даже создавать отельно код для клика по конкретной кнопке, всё завязано data-type и ссылках внутри .share_box.  Параллельно решил изучить матчасть по js, чтобы хотя бы примерно понимать код 

 

Всё работает, спасибо большое! Пришлось добавить ещё одну переменную, чтобы обработчик понимал какую таблицу нужно обновить

скрипт

$(document).on('click', '.share_box a', function () {var id = <?php echo $row['id'];?>;var table_id = "<?php echo $table_id;?>";var shareType = $(this).data("type");$.ajax({url: "/blocks/share_counter.php",type: "POST",data: ({postVar1: id,postVar2: shareType,postVar3: table_id})});});

код обработчика

$postVar1 = $_POST['postVar1'];$postVar2 = $_POST['postVar2'];$postVar3 = $_POST['postVar3'];$root = $_SERVER['DOCUMENT_ROOT'];include ($root . "/blocks/gb_tw_mag.php");if ($postVar3 == 'male_table') {if ($postVar2 == vk) {$sql = 'UPDATE male_articles SET share_vk = share_vk + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == fb) {$sql = 'UPDATE male_articles SET share_fb = share_fb + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == tw) {$sql = 'UPDATE male_articles SET share_tw = share_tw + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}}if ($postVar3 == 'female_table') {if ($postVar2 == vk) {$sql = 'UPDATE female_articles SET share_vk = share_vk + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == fb) {$sql = 'UPDATE female_articles SET share_fb = share_fb + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == tw) {$sql = 'UPDATE female_articles SET share_tw = share_tw + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}}if ($postVar3 == 'other_table') {if ($postVar2 == vk) {$sql = 'UPDATE other_articles SET share_vk = share_vk + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == fb) {$sql = 'UPDATE other_articles SET share_fb = share_fb + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}if ($postVar2 == tw) {$sql = 'UPDATE other_articles SET share_tw = share_tw + 1 WHERE id = :id';$update_data = $pdo->prepare($sql);$update_data->bindValue(':id', $postVar1);$update_data->execute();}}
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy