Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2010, 15:35
Интересующийся
Отправить личное сообщение для jura4x01 Посмотреть профиль Найти все сообщения от jura4x01
 
Регистрация: 11.11.2010
Сообщений: 29

проблема с JSON объектом в AJAX запросе
function choose(id){
        $("#data").html('');
        $.ajax({
            type: "POST",
            url: "/ajax/"+id.substring(0, id.lastIndexOf('_')),
            cache: false,
            data: "q="+$("#"+id+"_title").val(),
            dataType: 'json',
            timeout: 10000,
            error: function() {$("#data").append('');},
            success: function(data){
                if (data.a !== undefined) {
                    $.each(data.a, function(i, obj) {                        
                            $("#data").append('<div>'+obj.info+'</div>');
                    });
                }
                else if (data.b[0] !== undefined) {
                    $.each(data.b, function(i, obj) {
                        $("#data").append('<div><b>'+obj.title+'</b></br><font color="#a0a0a0">'+obj.info+'</font></div>');
                    });
                }
                $("#data").show();
                $("#data div").click(function(){                    
                    var i = $("#data div").index(this);
                    insert(i,id,data);                        
                }); 
                var i = 0; 
                $("input:text").keypress(function(e){
                    id = $(this).next().attr('id');
                    if (e.keyCode == '13') {
                        if ($("#data").html() !== '') {
                            if ($("#data").children().get(0).tagName == "DIV")
                                insert(i,id,data);
                            else {
                                $("#data center").remove();
                                $("#data").hide();
                                $("#"+id+"_title").focus();
                                clear(id);
                            }                           
                        } 
                        return false;
                    }                   
                });
            }
        });
        return false;
    }

проблема в том, что после первого запроса данные data кэшируются. а хотя запрос всегда приходит новый, в функции выбора применяются старые данные. в чем может быть суть проблемы?
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2010, 15:46
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

я обычно даже не думая уже к урлу добавляю рандомное число, не пробовал?
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2010, 15:51
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

да, какого вида url ?
Я вообще всегда к php обработчику отправляю запросы, никаких проблем не встречал.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2010, 16:02
Интересующийся
Отправить личное сообщение для jura4x01 Посмотреть профиль Найти все сообщения от jura4x01
 
Регистрация: 11.11.2010
Сообщений: 29

url, как вы видите, содержит переменную. сервер обрабатывает запрос в зависимости от этой переменной. в ней содержится имя базы, из который сервер должен достать соответствующие значения. так что random отпадает

от PHP я отказался согласно требованию заказчика.

ps.причем эта проблема имеет место только в случае события keydown. если совершать выбор по событию click - все функционирует должным образом. возможно дело в переменных, передаваемых функциям. но только как это проверить...

Последний раз редактировалось jura4x01, 11.11.2010 в 16:05.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2010, 16:06
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Цитата:
так что random отпадает
url: "/ajax/"+id.substring(0, id.lastIndexOf('_')),

поменяй на
url: "/ajax/"+id.substring(0, id.lastIndexOf('_'))+"?r="+Math.random(),


Цитата:
но только как это проверить
echo $_POST[... и смотри что сервер возвращает.
__________________
.

Последний раз редактировалось Skipp, 11.11.2010 в 16:11.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2010, 16:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

post-запросы не кэшируются, к ним не обязательно случайный параметр добавлять
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2010, 15:40
Интересующийся
Отправить личное сообщение для jura4x01 Посмотреть профиль Найти все сообщения от jura4x01
 
Регистрация: 11.11.2010
Сообщений: 29

решил проблему с помощью глобальной переменной, в которую запихиваю JSON данные, полученные по запросу.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 23:54
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08