Передача 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, время: 22:02. |