Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2014, 20:39
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Передача 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>
<form  id="chat-form">
<input type="text" id="chat-msg">
<input type="submit" name="Submit">
</form>
Подскажите как передать значение переменной с этой же страницы, например $username.
Пробовал так
var send_data = {
last_id: $(chat).attr('data-last-id'),
var username = {$username};
};
Не получилось..
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2014, 23:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от cript
например $username
А где у тебя такая переменная? Чет в коде не видно.
Сообщение от cript
.attr("disabled", true);  
Не .attr(), а .prop()
Сообщение от cript
.attr('data-last-id')
Лучше .data('last-id')
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2014, 23:49
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Сообщение от danik.js
А где у тебя такая переменная? Чет в коде не видно.
А переменная находится на странице, и к тому же она php.. Например страница index.php:
<script src="js/chat.js"></script> // вышепредставленный скрипт
<?php
$username = "demo"; // переменная, которая должна быть отправлена
?>
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2014, 00:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от cript
и к тому же она php
Сообщение от cript
А переменная находится на странице, и к тому же она php
Вообще-то ты сам себе противоречишь. Если переменная php - то она "находится" на сервере, в момент генерации страницы. А в самой сгенерированной HTML-страничке ее конечно же нет. То есть тебе ее надо вывести в эту страничку. Например так:
<script>
var username = "<?php echo $username ?>";
alert(username);
</script>


После обработки интерпретатором PHP в результате браузер получит:
<script>
var username = "demo";
alert(username);
</script>

Можешь нажать Ctrl+U и увидеть своими глазами.

Кстати, можно вместо <?php echo $username ?> писать <?= $username ?>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2014, 01:48
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Действительно так она считывается, однако не получается ее передать, прописываю
var send_data = {
last_id: $(chat).attr('data-last-id'),
username: username
};

а мне приходит значение "1"..
Ответить с цитированием
  #6 (permalink)  
Старый 21.03.2014, 01:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А в алерте правильное значение или тоже единица?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 21.03.2014, 01:53
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

в сообщении все выводит правильно
Ответить с цитированием
  #8 (permalink)  
Старый 21.03.2014, 02:31
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от cript
а мне приходит значение "1"..
Может ты неправильно обращаешься к массиву с POST-данными?
$username = $_POST['username'];

Или может у тебя переменная username перетирается случайно где-то, а ты не заметил?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 21.03.2014, 03:17
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Тут в чем то еще дело, потому что числовой параметр передать удается..
Часть скрипта который принимает данные:
// получаем 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')

Однако мне нужно передать имя пользователя, которое не несет числовое значение и способ который подходит для числовых переменных в данном примере не прокатывает..

Последний раз редактировалось cript, 21.03.2014 в 03:21.
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2014, 03:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от cript
(int)
cript, ну ты пень! Это же приведение к числовому типу )
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров из PHP (JSON) sitesv AJAX и COMET 15 30.07.2013 13:50
Передача параметров сценарию обработки стореджа на сервере Allan Stark ExtJS 4 03.10.2012 14:46
из массива json в (php) переменные Sadist_dead AJAX и COMET 6 24.08.2011 22:58
Передача параметров javascript между iframe и документом. freedon Events/DOM/Window 8 05.05.2011 16:29
передача JSON на сервер mikeles AJAX и COMET 0 04.03.2011 11:28