ExtJS + django форма отправить сообщение об успехе / ошибке - PullRequest
2 голосов
/ 08 ноября 2011

У меня проблема при обратном вызове отправки формы, код на стороне клиента:

[...]
buttons: [{
    text: 'submit',
    formBind: true,
    handler: function(){
         formPanel.getForm().submit({
         url: this.actionUrl,
         waitMsg: TR['formdialog.messages.saving'],
         success: function(form, action) {
             this.close();
         },
         failure: function(form, action) {
             if(action.failureType == Ext.form.Action.CLIENT_INVALID) {
                 Ext.Msg.alert('Failure', 'Client invalid');
             }else if(action.failureType == Ext.form.Action.CONNECT_FAILURE){
                 Ext.Msg.alert('Failure', 'Connect failure');
             }else if(action.failureType == Ext.form.Action.SERVER_INVALID){
                 Ext.Msg.alert('Failure', 'Server invalid');
             }else{
                 Ext.Msg.alert('Failure', action.result.msg);
             }
         }
         [...]

На стороне сервера код так же прост:

response = {'success':True, 'msg': 'Everything went better than expected'}
print response
return HttpResponse(content=json.dumps(response))

При попытке с Firefox 3.6.17 форма остается с сообщением ожидания и ничего не делает.С Firebug 1.7.2 это можно увидеть на вкладке net, петиции к серверу и в консоли (запущен сервер с runserver), я вижу распечатку ответа.Однако action.response пуст, и в Firebug я вижу статус «Прервано».Если я установил точки останова в случае успеха и неудачи, кажется, что выполнение не проходит ни один из них: S (есть ли другой возможный случай?).

При попытке с Chrome 7.0.517.44 выполнение, кажется, идетчерез успех (что правильно), но action.response также пуст и консоль отражает «Не удалось загрузить ресурс» (хотя в консоли сервера ответ печатается правильно).

Обновление : СHttpFox Я вижу NS_ERROR_NET_RESET (как и с Wireshark я вижу, что сервер отправляет пакет с флагом RST), но я не имею понятия о причине этого поведения: S.

1 Ответ

0 голосов
/ 08 ноября 2011

Попробуйте установить mimetype = "application / json" в функции просмотра

...