1

Extjs4.1ファイルフィールドを使用してサーバーにファイルを投稿しようとしています。

しかし、エラーが発生し、結果が未定義であると表示されます。:(

ここに画像の説明を入力してください

知らせる、

ファイルフィールドがなくても、正常に機能します。」

これがフォームです。そしてそれはOKをロードします。送信しようとするとエラーが発生します。

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
                    });
                }
            });
        }
    }

誰か知っている、私の問題は何ですか?アドバイスしてください〜!

ありがとう

[編集]

submit()の場合、5〜10秒後にエラーメッセージが表示されます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

[編集2]

ASP.NET(c#)コード、

[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コードが間違っていると思います...誰かがそのコードの何が問題なのか知っていますか?

4

1 に答える 1

2

サーバーが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;   

ドキュメントへのリンクは次のとおりです。

于 2012-07-13T00:16:37.573 に答える