Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2012, 17:30
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

"success" и "failure" приём данных с сервера ???
Вопрос в передаче ошибки с сервера

Есть Панель на ней текстовые поля и кнопочка Сохранить, код:
var PanelData = new Ext.FormPanel({
 url: 'Handlers/ХХХ.ashx?pid=' + pid + ...,
 defaultType: 'textfield',
 ...
 buttons: [{
  text: 'Save',
  handler:
   function () {
     PanelData.submit({
       waitMsg: 'Loading...',
       url: 'Handlers/ХХХ.ashx?pid=' + pid + ...,
       success: function (form, action) { //true
                    }
       failure: function (form, action) { //false
                      alert('Error!!!')
                 }
     });
   }
});

Когда с сервера пришло: true срабатывает success
Когда с сервера пришло: false срабатывает failure

Проблема в том, что надо отправить с сервера ошибку, что бы видеть что не так сработало на стороне Сервера.
У меня срабатывает код только если приходит с Сервера чистые:
Все хорошо: true
Ошибка: false

Гуглил, везде пишут, что надо отправлять данные с сервера так:
Все хорошо: true или success
{ "success": "true"}

Ошибка: false или failure
{ "success": "false", "message": "Error message goes here." }


Например, если все хорошо и приходит "{ "success": "true"}", то срабатывает failure (((

Подскажите, пожалуйста, что не так делаю !!!
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2012, 17:40
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от potkin Посмотреть сообщение
если все хорошо и приходит "{ "success": "true"}", то срабатывает failure
Ext.form.Basic.submit()
Цитата:
{
    "success":*!*false*/!*, // note this is Boolean, not string
    "msg":"You do not have permission to perform this operation"
}
__________________
"Helo, word!" - 17 errors 56 warnings

Последний раз редактировалось Ex_Soft, 23.05.2012 в 17:49.
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2012, 18:11
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Ex_Soft,
Во блин - с примера всё отлично сработало .....
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2012, 01:24
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

С Вашего позволения ещё вопросик:
Загрузка файлов на сервер
Ошибка, которую показывает консоль Хрома:
Uncaught Ext.Error: You're trying to decode an invalid JSON String: <pre style="word-wrap: break-word; white-space: pre-wrap;">{'success':false,'msg':'В стадии разработки!!!'}</pre>

То есть долбанный <pre в JSON String !!!
Код Панели с полем для загрузки файлов на Сервер:
var PanelData = new Ext.create('Ext.form.Panel', {
        title: 'Upload a Photo',
        width: 400,
        bodyPadding: 10,
        frame: true,
        items: [{
            xtype: 'filefield',
            name: 'photo',
            fieldLabel: 'Photo',
            labelWidth: 50,
            msgTarget: 'side',
            allowBlank: false,
            anchor: '100%',
            buttonText: 'Select Photo...'
        }],
        buttons: [{
            text: 'Upload',
            handler: function () {
                PanelData.submit({
                    url: 'Handlers/ХХХ.ashx?pid=' + pid,
                    waitMsg: 'Uploading your photo...',
                    success: function (fp, o) {
                        Ext.Msg.alert('Success', 'Your photo has been uploaded.');
                    },
                    failure: function (form, action) {
                        switch (action.failureType) {
                            case Ext.form.action.Action.CLIENT_INVALID:
                                Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
                                break;
                            case Ext.form.action.Action.CONNECT_FAILURE:
                                Ext.Msg.alert('Failure', 'Ajax communication failed');
                                break;
                            case Ext.form.action.Action.SERVER_INVALID:
                                Ext.Msg.alert('Failure', action.result.msg);
                        }
                    }
                });
            }
        }]
    });


Гуглил ошибка с бородой, то есть извесный факт.
Пробовал и вместо
ContentType = "text/plain";
ставить
ContentType = "application/json";
исправило ситуацию, но частично, то есть для некоторых браузеров срабатывает, для некоторых нет и типов файлов.

Кто сталкивался подскажите что делать.
Юзаю АСП.НЕТ 4.0
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2012, 09:45
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от potkin Посмотреть сообщение
То есть долбанный <pre в JSON String !!!
А откель он там вообще взялсо? Выхлоп серванта д.б.:
Код:
context.Response.ContentType = "text/html";
context.Response.Write("<html><body><textarea>{ \"success\": \"true\", \"data\": { \"contactId\": \"contact id\", \"file\": \""+FileName+"\" } }</textarea></body></html>");
Сообщение от Connection.js
if (doc.body) {
    if (/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)) { // *!*json response wrapped in textarea*/!*
        response.responseText = *!*firstChild*/!*.value;
    } else {
        response.responseText = doc.body.innerHTML;
    }
}
__________________
"Helo, word!" - 17 errors 56 warnings

Последний раз редактировалось Ex_Soft, 25.05.2012 в 10:45.
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2012, 15:45
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Ex_Soft,
А это:
if (doc.body) {
    if (/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)) { // json response wrapped in textarea
        response.responseText = firstChild.value;
    } else {
        response.responseText = doc.body.innerHTML;
    }
}

куда "вставить", если не секрет ?
Ответить с цитированием
  #7 (permalink)  
Старый 25.05.2012, 17:18
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от potkin Посмотреть сообщение
А это
...
куда "вставить", если не секрет ?
Улыбнуло... Это ж я Вам, так сказать, первоисточник, сиречь - исходник цицировал:
Цитата:
Сообщение от Connection.js
C ext\src\data\Connection.js
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #8 (permalink)  
Старый 29.05.2012, 17:30
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Ключевой момент был:
context.Response.ContentType = "text/html";
Ответить с цитированием
  #9 (permalink)  
Старый 30.05.2012, 09:27
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Ну, дык:
Сообщение от http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-hasUpload
The server response is parsed by the browser to create the document for the IFRAME. If the server is using JSON to send the return object, then the Content-Type header must be set to "text/html" in order to tell the browser to insert the text unchanged into the document body.
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прием данных с сервера в EXT JS Rush ExtJS 13 30.03.2012 13:42
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
автоматическое обновление div'а и подгрузка данных с сервера Buternik AJAX и COMET 1 29.12.2011 22:25
jQuery.ajax( ) проблема пи получении данных от сервера hard0000 jQuery 4 30.07.2010 12:34
Преобразование данных с сервера в JSON frolvict Общие вопросы Javascript 1 04.04.2010 12:26