LINUX.ORG.RU

[jquery][jquery.form] Режет tr и td теги из ответа сервера

 


0

0

Привет лорч. Есть вопрос.

Я использую либу http://jquery.malsup.com/form/ для отправки данных из формы. Но, наткнулся на странный баг с получением ответа сервера при использовании ajaxSubmit.

Когда отправляем обычную форму без файла, то все ок. А если отправить с файлом, то либа зачем то обрезает теги tr и td. Причем сам файл отправляется и обрабатывается сервером нормально.

Процесс отправки аяксом выглядит примерно так.

            $('#bug button').click(function() {
                $('#bug').ajaxSubmit({target:'#target'});
                return false;
                });
в success callback тоже обрезано.

Для демонстрации бага подготовил джанговский проект.

http://rghost.ru/837841 testjs.zip 12.36K

Распаковать и запустить.

python manage.py runserver

Мб тут какие то тонкости, которые я не заметил, ибо с js плотно дела не имею.

Приму ваши ответы.


Ответ на: комментарий от trashymichael

Так ответ сервера на POST запрос режется js скриптом. В этом и проблема. А так нужно для того чтобы, например, вызвать диалог, в диалоге форма, ее отправить при заполнении, и полученный ответ записать в dom страницы.

Apkawa
() автор топика
Ответ на: комментарий от Apkawa

ах, ответ «режется».

может, морочу голову, твой проект у меня так и не запустился, разбираться я не стал (хотя уверен, проблема в моей системе а не в твоем проекте),

НО

думаю, «режется» из-за того что ты возвращаешь не валидный код? а имеено:

23 return HttpResponse(«<tr><td><div>test</div></td>\

24 <td><b>test2<b></td></tr>»)



видишь (не)закрывающий b? попробуй-ка...

trashymichael ★★★
()

а зачем?

а для чего необходим плагин для рабрты с формой, когда сама jQuery уже имеет штатные метод:

jQuery(").serialize()

который я обычно использую так -

var fn = function() {
jQuery.post(jQuery(this).attr('action'),
jQuery(this).serialize,
function(data){}, 'json')
return false
}

jQuery('#id_form').submit(fn);

OldFornit
()
Ответ на: комментарий от trashymichael

Ну весь прикол в том что, он режет если форма с файлом, но все ок если простая форма.

<b> приведен для наглядности. он никакой роли не играет.

Apkawa
() автор топика
Ответ на: а зачем? от OldFornit

Это то для обычной формы. А если файл? К тому же я не отправляю сериализированый json на сервер, а простой post. ajaxSubmit работает как обычный браузерный сабмит, не аякс.

Apkawa
() автор топика
Ответ на: комментарий от true_admin

>имхо, лучше jquery юзать свой а не брать со всяких внешних

… потому что?

Deleted
()
Ответ на: комментарий от Apkawa

итак, тс
твоя библиотека работает по-разному в приведенных тобою случаях, отсюда и проблемы
хотелось бы уделить отдельное внимание проекту, тобою предоставленному, но жизнь тебя и так всему научит, не будем разводить демагогию, к делу
в первом случае отсылается обычный ajax запрос, ответ обрабатывается как обычно, ну ты понел
во втором случае создается iframe, в который копируется форма, и ответ, соответственно, «вынимается» из iframe'а, ну ты понел уже в чем дело?
если до сих пор нет, быстрое решение
которое, к слову, тоже не пришлось бы искать, если бы ты все делал по-человечески

<table id='target'></table>

ну ты понел уже в чем твоя ошибка? до сих пор нет :)? делай с нами, делай как мы, делай лучше нас:

<div id='target'></div>

...


return HttpResponse('<table>...


все

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

Спасибо. Разобрался.

По поводу тегов, данный пример просто немного выдран из контекста проблемы. в проекте у меня была задумка вставлять ответ сервера сразу в таблицу.

В данном случае хотелось бы получать ответ сервера без обработки брузером как есть...

Apkawa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.