Передача php параметров JSON
Приветствую!
Имеется скрипт чата, который передает параметры со страницы $(function(){ var chat = $('#chat')[0]; // Окно чата var form = $('#chat-form')[0]; // форма // вешаем обработчик на отправку формы $('#chat-form').submit(function(event){ // поле ввода var text = $(form).find('input[type="text"]'); // выключаем форму пока не пришел ответ $(form).find('input').attr("disabled", true); // отправка сообщения update(text); // что бы форма не перезагружала страницу return false; }); function update(text) { // что шлём var send_data = { last_id: $(chat).attr('data-last-id'), }; if (text) send_data.text = $(text).val(); // шлём запрос $.post( 'Library/Classes/Chat.class.php', send_data, // отдаём скрипту данные function (data) { // ссылка пришла? if (data && $.isArray(data)) { $(data).each(function (k) { // формируем наше сообщение var msg = $('<div>' + data[k].created + ': ' + data[k].text + '</div>'); // и цепляем его к чату $(chat).append(msg); // если ласт ид меньше пришедшего if (parseInt($(chat).attr('data-last-id')) < data[k].id) // запоминаем новый ласт ид $(chat).attr('data-last-id', data[k].id); }); // если это отправка, то при получении ответа, включаем форму if (text) { // вклчюаем форму $(form).find('input').attr("disabled", false); // и очищаем текст $(text).val(''); } // прокрутка $(chat).scrollTop(chat.scrollHeight); // обновим таймер update_timer(); } }, 'JSON' // полученные данные рассматривать как JSON объект ); } // что бы при загрузке получить данные в чат, вызываем сразу апдейт update(); // что бы окно чата обновлялось раз в 5 секунд, прицепим таймер var timer; function update_timer() { if (timer) // если таймер уже был, сбрасываем clearTimeout(timer); timer = setTimeout(function () { update(); }, 5000); } update_timer(); }); Форма: Код:
<div id="chat" data-last-id="0"></div> Пробовал так var send_data = { last_id: $(chat).attr('data-last-id'), var username = {$username}; }; Не получилось.. |
Цитата:
Цитата:
Цитата:
|
Цитата:
<script src="js/chat.js"></script> // вышепредставленный скрипт <?php $username = "demo"; // переменная, которая должна быть отправлена ?> |
Цитата:
Цитата:
<script> var username = "<?php echo $username ?>"; alert(username); </script> После обработки интерпретатором PHP в результате браузер получит: <script> var username = "demo"; alert(username); </script> Можешь нажать Ctrl+U и увидеть своими глазами. Кстати, можно вместо <?php echo $username ?> писать <?= $username ?> |
Действительно так она считывается, однако не получается ее передать, прописываю
var send_data = { last_id: $(chat).attr('data-last-id'), username: username }; а мне приходит значение "1".. |
А в алерте правильное значение или тоже единица?
|
в сообщении все выводит правильно
|
Цитата:
$username = $_POST['username']; Или может у тебя переменная username перетирается случайно где-то, а ты не заметил? |
Тут в чем то еще дело, потому что числовой параметр передать удается..
Часть скрипта который принимает данные: // получаем id последнего сообщения $last_id = isset($_POST['last_id']) ? (int)$_POST['last_id'] : 0; // текст $text = isset($_POST['text']) ? trim($_POST['text']) : ''; На страничке форму дополнил следующим: <div id="chat" data-last-id="0" data-game-id="<?=$gameID;?>"></div> В вышеупомянутый скрипт приема данных добавил следующее $gameID = isset($_POST['gameID']) ? (int)$_POST['gameID'] : 0; В скрипт chat.js добавил var send_data = { ... gameID: $(chat).attr('data-game-id') Однако мне нужно передать имя пользователя, которое не несет числовое значение и способ который подходит для числовых переменных в данном примере не прокатывает.. |
Цитата:
|
Часовой пояс GMT +3, время: 19:04. |