|
|
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
Привет. Есть форма, которая отправляется на сервер с помощью библиотеки jQuery.form.js и метода ajaxSubmit(). Там происходят некие действия. Результат их - или сообщение об ошибке или сообщение об успешности операции. Вопрос: можно ли в success аякссабмита как-то дополнительно передать статус (success/error), чтобы в зависимости от него сделать то или иное. Мне нужно в success понять, чем закончилась операция на сервере. В data возвращается html сообщения. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Можно конечно извратиться, и сделать поиск по data нужного класса, например class_success. Если в data есть элементы с таким классом, значит все ок, если нет - значит ошибка. Но это решение - часный случай, а мне хотелось бы понять общий принцип, как в success понять чем закончилась операция на сервере. Всем заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 01:33 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
urukhay, Код: php 1. 2. 3. Получишь ответ в формате JSON - дальше распарсил и хоть в космос запускай ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 02:39 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
form.ajaxSubmit(options) полностью идентичен $.ajax(options), для которого сериализовали параметры (есть еще ряд параметров, связынных со спецификой отправки и с файлами, но в данном контексте это неинтересно). 1. У ajaxSubmit есть значение error, которое может как сообщить о проблеме передачи, так им можно и управлять, помещая ошибку в ответ. Соответственно, и обработать в зависимости от значения параметров. 2. Если все же обработка на сервере произошла и ответ об ошибке не системный, а программный и отдан обработчиком, то, в принципе, это должно решаться архитектурно: скажем, ответ должен предоставлять собой json как с параметром статуса, так и с данными. Иначе это напоминает поделку: если все правильно, используем ответ как носитель наших данных, если нет - как информатор об ошибке. Если все же хочется делать так и никак по-другому, то остается вариант с ошибкой: информируем об ошибке и обрабатываем в error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 02:47 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, Спасибо за совет :) IDVsbruck, Ошибка у меня как раз программная, поэтому, если я правильно понимаю, мне подходит вариант, предложенный MikkiMouse) В общем всем спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 03:53 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
Кстати говоря, а как сие парсить? На выходе ведь строка получается, как я понимаю? Т.е. это не объект JSON? И парсить нужно как строку функциями работы со строками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 15:32 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
По-твоему, если ответ от сервера приходит в параметре data, то это кусок DOM'а? К сожалению (или к счастью) в веде все есть строка (с). Как юзал раньше, так и юзай. Единственное, чтобы не было проблем с передачей, на сервере надо энкодить строку, на клиенте декодить. И в innerHTML. Или .html(), если это jQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 18:16 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, я Вас не совсем понял: что значит "как юзал раньше, так и юзай"? :) Раньше я просто выводил все, что пришло в див, без всяких енкодов/декодов. Но со временем понадобилось еще получить статус. Идею я понял вроде, на сервере нужно перед выводом все это преобразовать в json. Какие нужны еще дополнительные енкоды? И что с ним делать дальше: парсить как обычную строку, насколько я понял из последнего сообщения? Или строку, в которой хранится по сути json можно как-то преобразовать к объекту json? Я был бы Вам благодарен, если бы Вы привели небольшой примерчик php скрипта и js, точнее их взаимодействие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:49 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
авторЕдинственное, чтобы не было проблем с передачей Да, забыл спросить, а что за проблемы могут быть с передачей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:49 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:50 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
ПэХаПэ я совершенно не приемлю, поэтому и приводить не буду. Суть в том, что ранее ты получал в success(data) параметр data, в котором был кусок html-разметки. Так? И банально через div.html(data) вставлял в div. В принципе, ничего не поменялось: получаешь некий объект json: {status:"ok", dom:"<tag>...</tag>"} и все отличие сводится к тому, что разметка добавляется как div.html(json.dom). Что касается кодирования и декодирования, то не исключено, что в разметке будут попадаться одинарные, двойные кавычки, возможно, еще какие-то некорректные для передачи знаки. Поэтому советую кодировать вставляемую в json разметку, а перед вставкой на клиенте ее декодировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:55 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
urukhayДа, забыл спросить, а что за проблемы могут быть с передачей? Как раз то, о чем я сказал - обычно это проблема с кавычками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:57 |
|
||
|
jQuery - ajaxSubmit и возврат статуса
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, форум мне этот мил. И гугл мил, и даже яндекс :) Просто бывает, когда просто не знаешь, как именно спросить поисковик. Вот поэтому пришлось спросить существ более разумных)) Спасибо за ссылку! IDVsbruck, А почему Вы не приемлите PHP?) Просто любопытно. А касательно примера - не суть, на каком языке он, суть в логике. Но сейчас, думаю, он уже не нужет, вроде все понятно. В общем, большое спасибо всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 20:54 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38160014&tid=1448676]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 384ms |

| 0 / 0 |
