Extjs4, Загрузка файлов

Я пытаюсь отправить файл на сервер, используя файловое поле Extjs4.1.

но возникает ошибка, он говорит, что результат не определен. :(

введите здесь описание изображения

Поставить в известность,

без поля файла все работает нормально.

Это форма. и загружается нормально. ошибка возникает при попытке отправить.

var myform = Ext.create('Ext.form.Panel', {
    bodyStyle: 'padding: 15px 50px',
    defaults: {
        xtype: 'textfield',
        anchor: '100%',
        style : 'margin-top:10px'
    },
    items: [
    {
        xtype: 'fieldcontainer',
        layout: 'hbox',
        anchor: '50%',
        items: [
            {
                xtype: 'textfield',
                fieldLabel: '<b>Order Number </b>',
                name: 'orderNo',
                maxLength: 9,
                flex: 1,
                allowBlank: false
            }, {
                xtype: 'button',
                text: 'Get Info',
                name : 'getOrderInfo_btn',
                tooltip: 'Get Order Information',
                style: 'margin-left:5px',
                flex: 0
            }
        ]
    }, {
        fieldLabel: '<b>Refundable Tax Amount </b>',
        name: 'refundAmount',
        readOnly: true,
        labelWidth: 160,
        anchor: '45%',
        allowBlank: false
    }, {
        fieldLabel: '<b>Certificate File</b>',  //without this, it's OK
        xtype : 'filefield',  
        name: 'certificate',
        labelWidth: 160,
        anchor: '90%',
        allowBlank: false
    }
    .
    .
    .

Это мой контроллер (для отправки формы),

refundTaxAmount: function (obj) {
        var form = obj.up('panel').down('form').getForm();
        console.log('Hi'); // it prints, but after that it stop with an error msg.
        if (form.isValid()) {
            form.submit({
                waitMsg: 'Please wait, now processing...',
                url: '/Order/CreditForTax/',
                method: 'POST',
                success: function (form, action) {
                    Ext.MessageBox.show({
                        title: 'Notice',
                        msg: 'The tax credit has been refunded!',
                        buttons: Ext.MessageBox.OK,
                        icon: Ext.MessageBox.INFO,
                        width: 300
                    });
                    form.reset();
                },
                failure: function (form, action) {
                    Ext.MessageBox.show({
                        title: 'Error',
                        msg: action.result.message,
                        buttons: Ext.MessageBox.OK,
                        icon: Ext.MessageBox.ERROR,
                        width: 300
                    });
                }
            });
        }
    }

Кто-нибудь знает, в чем моя проблема? пожалуйста, посоветуйте мне~!

Спасибо

[РЕДАКТИРОВАТЬ]

при отправке() через 5-10 секунд появляется сообщение об ошибке.

введите здесь описание изображения

введите здесь описание изображения

[Изменить2]

Код ASP.NET (С#),

[HttpPost]
public JsonResult CreditForTax(RefundModel info, HttpPostedFileBase certificate)
{
    object result;
    try
    {
    //do something

    result = new {success = true};
    }
    catch (Exception e)
    {
    log.Error(e.Message +"\n"+e.StackTrace);
    result = new { success = false, message = e.Message };
    }

    return Json(result);
}

да, я думаю, что код asp.net неверен... кто-нибудь знает, в чем проблема с этим кодом?


person Expert wanna be    schedule 12.07.2012    source источник
comment
Можете ли вы уточнить, возникает ли ошибка до отправки формы или файл отправляется на сервер, но ответ не обрабатывается правильно?   -  person dbrin    schedule 12.07.2012
comment
Нет, прежде чем отправить сообщение об ошибке, поэтому, наконец, не смог опубликовать его.   -  person Expert wanna be    schedule 12.07.2012
comment
Как выглядит стек вызовов? Что он делает и где на самом деле возникает ошибка?   -  person dbrin    schedule 12.07.2012
comment
@DmitryB Я только что отредактировал свой вопрос с более подробным сообщением об ошибке, не могли бы вы просмотреть мой вопрос, пожалуйста? Спасибо!   -  person Expert wanna be    schedule 12.07.2012
comment
хорошо похоже, что ошибка связана с обработкой ответа - поэтому с сервером, должно быть, связались в этот момент. Можете ли вы убедиться, что код сервера обрабатывается должным образом и как выглядит ответ сервера?   -  person dbrin    schedule 13.07.2012
comment
@DmitryB Да, вы правы, я поставил под сомнение код asp.net, не могли бы вы просмотреть еще раз, пожалуйста?   -  person Expert wanna be    schedule 13.07.2012


Ответы (1)


Если сервер использует JSON для отправки возвращаемого объекта, то заголовок Content-Type должен быть установлен на "text/html", чтобы указать браузеру вставить текст без изменений в тело документа.

Код C# (MVC3):

var jsonResponse = Json( new
                        {
                            success = false,
                            message = "Oops. There was an unexpected error.\n" + ex.ToString()
                        });
jsonResponse.ContentType = "text/html"; // <-- Set content type explicitly.
return jsonResponse;   

Вот ссылка на документацию .

person jorel    schedule 13.07.2012