0

jqueryフォームプラグインを使ってファイルをアップロードし、レスポンスデータがjsonの場合に$.ajaxFormの処理がタイムアウトになる現象について質問します。

サーバー側での処理は問題なく行われ、レスポンスデータはfirebugで見る限りjson形式のままの形で返ってきます。ただ、$.ajaxForm ではデータを取得できないと思います。以下、加工コードの一部です。

    コード
    $('#upload').ajaxForm({
    キャッシュ: false,
    データ型: 'json',
    タイプ: 'POST',
    エラー: 関数 (xhr、ステータス、エラー) {
        alert('エラーが発生しました。ステータス:' + ステータス
            + ' --ステータス テキスト:' + エラー
            + ' -- エラー結果:' + xhr.statusText);
    }、
    タイムアウト: 1000、
    dataType:'json',
    data:{ 'パス':'パス' , 'タイプ':'タイプ' },
    完全:関数(){
        アラート('完了');
    }、
    成功:関数(データ){
        アラート ('成功');
    }、
    });
    
    応答
    (firebug)

header Connection close Content-Length 155 Content-Type application/json; charset=utf-8 Status 200 data json {"type":"json","message":"complete process"} <i>(A browser)</i> ①download json data ②alert('error occured. Status:timeout --Status Text:timeout --Error Result:n/a') ③alert('complete') </pre>

dataType が html の場合、success 処理できました。また、$.ajax の場合は json が成功となります。決済予定はありますか? 適宜お尋ねします。

4

1 に答える 1

0

contentTypeのような設定をしてみてください

   $('#upload').ajaxForm({
    cache: false,
    dataType: 'json',
    contentType:"application/json; charset=utf-8",
    type: 'POST',
    error: function(xhr ,status ,error ) {
        alert('error occured. Status:' + status
            + ' --Status Text:' + error
            + ' --Error Result:' + xhr.statusText); 
    },
    timeout: 1000,      
    data:{ 'path':'path' , 'type':'type' },
    complete: function(){
        alert('complete');
    },
    success:function(data){
        alert('success');
    },
    });
于 2011-09-02T06:38:48.617 に答える