2011-01-24 8 views
3

を指定して、アップロードファイル:私はそれがためのオプションがあると言う固有の追加FORMDATAする必要がありますが、私は取得していますjQueryのは、私は次のjQueryファイルアップロードプラグインを使用するために働いているFormData

https://github.com/blueimp/jQuery-File-Upload/wiki/Options 

JSエラー "Uncaught SyntaxError:Unexpected identifier"とFormDataの例がないため、動作しにくいです。ここで

は私が持っているものです。

$(function() { 
    $('.upload').fileUploadUI({ 
     uploadTable: $('.upload_files'), 
     downloadTable: $('.download_files'), 
     buildUploadRow: function (files, index) { 
      var file = files[index]; 
      return $(
       '<tr>' + 
       '<td>' + file.name + '<\/td>' + 
       '<td class="file_upload_progress"><div><\/div><\/td>' + 
       '<td class="file_upload_cancel">' + 
       '<div class="ui-state-default ui-corner-all ui-state-hover" title="Cancel">' + 
       '<span class="ui-icon ui-icon-cancel">Cancel<\/span>' + 
       '<\/div>' + 
       '<\/td>' + 
       '<\/tr>' 
      ); 
     }, 
     buildDownloadRow: function (file) { 
      return $(
       '<tr><td>' + file.name + ' ' + file.type + ' ' + file.size + '<\/td><\/tr>' 
      ); 
     }, 
    formData: 
    [ 
    { 
     name: '_http_accept' 
     value: 'application/javascript' 
    }, 
    { 
     name: '<%= session_key_name %>' 
     value: encodeURIComponent('<%= u cookies[session_key_name] %>'), 
    }, 
    { 
     name: 'authenticity_token' 
     value: encodeURIComponent('<%= u form_authenticity_token %>') 
    } 
    ] 
    }); 
}); 

答えて

7

あなたのformDataの右の場所でカンマを持っていない、私はあなたがそれはこのようになりたいと思う:

formData: [ 
    { 
     name: '_http_accept', 
     value: 'application/javascript' 
    }, { 
     name: '<%= session_key_name %>', 
     value: encodeURIComponent('<%= u cookies[session_key_name] %>')  
    }, { 
     name: 'authenticity_token', 
     value: encodeURIComponent('<%= u form_authenticity_token %>') 
    } 
] 

に留意されたいです。 name: ...の部分の後にカンマがありますが、value: ...の部分はありません。

また、ここではencodeURIComponent()は適切なエスケープ/エンコードメカニズムではなく、<%= u ...はすでにURIエンコードされているとは思いません。

value: '<%= cookies[session_key_name].gsub(/'/, "\'") %>' 

適切なエンコードを処理する必要があります:あなたがやらなければならないことは、より多くのこのようなものはおそらく(このJavaScriptはERBを通過していると仮定して)うまくいくように文字列をエスケープ単一引用符が含まれていないことを確認していますプラグインでは、とにかくPOSTを実行しているので、URLエンコーディングは適用されません。

また、JavaScript文字列のスラッシュをエスケープする必要はありません。特殊文字ではないので、'<\/td>'と言うだけで'</td>'と言うことができます。

私はjQuery-File-Uploadについて何も知らないが、あなたのコンマを修正することは、少なくともあなたの直近の問題を(そしてもっと面白い問題に!

関連する問題