Javascript.RU

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

AJAX форма - небольшой вопрос
Возможно тема уже обсуждалась где-то здесь, просто поиск ничего не дал, так как я даже не могу четко сформулировать задачу, которая передо мной встала.
Недавно пришлось написать небольшой модуль для форума vBulletin (Как этот), с AJAX функционалом в админке.
Смысл скрипта предельно прост - есть таблица с некоторыми вещами в базе данных, есть их вывод и есть их быстрое AJAX редактирование посредством появления формы, отдаваемый php скриптом на div.
Способ, конечно, не из лучших, но зато самый простой в исполнении. Форма соответственно содержит поля для изменения и скрытое поле (<input type="hidden" />) с id вещи. Работает вся эта бодяга неплохо, но есть одно но. После первого редактирования вещи с одинаковым id второй раз изменить её (без перезагрузки страницы) не получается. Просто не посылается AJAX запрос, хоть ты тресни. Этот своеобразный баг был для меня, конечно, откровением. JS я не занимаюсь, только так, по мелочи, пишу в основном статичные приложения, но тут вот потребовался AJAX функционал и обнаружился такой странный баг.
Судя по тому, что после обновления страницы вещь можно ещё раз отредактировать, дело в каком-то кеше со стороны браузера, правда я никак не могу взять в толк в каком конкретно месте и как с этим делом бороться...
Возможно кто-то сталкивался с такой проблемой?

Последний раз редактировалось Морф, 22.03.2010 в 00:30.
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2010, 00:36
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Морф
Просто не посылается AJAX запрос, хоть ты тресни. Этот своеобразный баг был для меня, конечно, откровением.
В чем баг? В вашем коде? Так где он? Телепатов нет.
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2010, 01:03
Новичок на форуме
Отправить личное сообщение для Морф Посмотреть профиль Найти все сообщения от Морф
 
Регистрация: 22.03.2010
Сообщений: 3

// Функции вызова формы
function start_edit(id){
	editor_form = new vB_AJAX_Handler(true);
	editor_form.onreadystatechange(start_edit_done);
	editor_form.send('script.php?do=starteditor&id=' + id);
}
function start_edit_done(){
	if (editor_form.handler.readyState == 4 && editor_form.handler.status == 200){
		fetch_object('item_editor_form').innerHTML = editor_form.handler.responseText; // Получаем от PHP скрипта форму для редактирования
	}
}
// Само редактирование
function edit(){
	form = document.forms.editform;
	name = form.name.value;
	// Ещё кое что
	id = form.id.value;
	edit_edititem = new vB_AJAX_Handler(true);
	edit_edititem.onreadystatechange(edit_done);
	edit_edititem.send('script.php?do=edititem&id=' + id + '&name=' + name + 'ещё кое что');
}
function edit_done(){
	if (edit_edititem.handler.readyState == 4 && edit_edititem.handler.status == 200){
		fetch_object('item_editor_form').innerHTML = edit_edititem.handler.responseText; // Сообщает, что вещь успешно отредактирована
	}
}

Что является вполне стандартным вариантом для этих модулей, по крайней мере нечто подобное я видел в примере.
Но код-то работает, вопрос не в этом. Вопрос в том, из-за чего возникает это своеобразное кеширование, создающее невозможность повторного редактирования без обновления страницы. Форма повторно вызывается прекрасно, а вот данные с неё не отправляются.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2010, 01:09
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Если это GET-запрос, то просто при каждом запросе добавляйте какой-нибудь параметр со случайным значением, или отправляйте POSTом.
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2010, 01:12
Новичок на форуме
Отправить личное сообщение для Морф Посмотреть профиль Найти все сообщения от Морф
 
Регистрация: 22.03.2010
Сообщений: 3

Сообщение от Octane Посмотреть сообщение
Если это GET-запрос, то просто при каждом запросе добавляйте какой-нибудь параметр со случайным значением, или отправляйте POSTом.
Примерно о чем-то таком я и думал, просто хотелось удостовериться в верности своих суждений. Большое спасибо за помощь.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даже не знаю как сформуллировать, вопрос по AJAX eugene00 AJAX и COMET 15 15.02.2010 15:07
Небольшой вопрос по jQuery deepslam jQuery 10 30.01.2010 00:19
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
вопрос по jSon + Ajax Beck Events/DOM/Window 47 07.10.2009 15:52
Ajax ограничение по расширениям фото. t0xas AJAX и COMET 8 13.08.2009 11:29