1

extjsからPHPにファイルをアップロードしようとしています。ファイルは正しくアップロードされていますが、UIがスタックし、次のエラーがスローされます。Uncaughtデコードしようとして無効なJSON文字列:

Content-typeヘッダーをtext/htmlに設定するための提案を検索して見つけましたが、それは機能しませんでした。これが私のコードです:

xtype:'form',
width:300,
bodyPadding:5,
frame:false,
items: [{
    xtype: 'filefield',
    name: 'csv',
    msgTarget: 'side',
    allowBlank: false,
    buttonOnly:true,
    anchor: '100%',
    buttonText: 'Import CSV',
    listeners: {
        'change': function(fb,v){
            var form = this.up('form').getForm();
            form.submit({
                url:'/Portal/parsecsv.php',
                standardSubmit:false,
                method:'PUT'
            })
        }
    }
}]

parsecsv.phpには、次のものがあります。

<?php header('Content-type:text/html');?>

手伝ってください。

4

3 に答える 3

2

無効なJson文字列を渡しています。質問に完全なJson文字列を追加していない可能性があるため、最初から問題を残しておきます。貼り付けたものの内部のみを強調表示します。

'change': function(fb,v){

これは有効なJsonではありません。有効なJson文字列に対する作業の応答からjavascriptを削除します。

于 2012-11-09T19:40:23.520 に答える
1

問題は解決しました。問題は、ファイルのアップロード時に、ExtJSがデフォルトでJSON応答を期待することでしたが、何らかの理由で、ExtJSはJSON応答をタグ内にラップします。したがって、私がしなければならなかったのは、PHPでtext / htmlへの応答のコンテンツタイプを設定し、次にExtJSで、応答をJSONではなく文字列として解析することです。また、アップロードが成功すると、ExtJSはフォームの送信時に「成功」​​イベントではなく「失敗」イベントを発生させることがわかりました。

于 2012-11-19T14:47:40.997 に答える
1

JSONの正しいヘッダーは

Content-type: application/json
于 2012-11-09T19:03:28.140 に答える