jQuery文件上传,指定FormData

我正在使用以下jQuery文件上传插件:

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

我需要特定的额外formdata,它说有一个选项,但我得到一个JS错误“Uncaught SyntaxError:Unexpected identifier”,并且没有FormData示例,这使得很难开始工作。

这是我有的:

 $(function () { $('.upload').fileUploadUI({ uploadTable: $('.upload_files'), downloadTable: $('.download_files'), buildUploadRow: function (files, index) { var file = files[index]; return $( '' + '' + file.name + '' + '
' + '' + '
' + 'Cancel' + '' + '' + '' ); }, buildDownloadRow: function (file) { return $( '' + file.name + ' ' + file.type + ' ' + file.size + '' ); }, formData: [ { name: '_http_accept' value: 'application/javascript' }, { name: '' value: encodeURIComponent(''), }, { name: 'authenticity_token' value: encodeURIComponent('') } ] }); });

你没有在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: ...后面有逗号name: ...部分但不是value: ...部分。

此外,我不认为encodeURIComponent()是这里适当的转义/编码机制和<%= u ...已经URI编码。 你需要做的就是确保字符串不包含未转义的单引号,所以更像这样的东西可能会起作用(假设这个JavaScript正在通过ERB):

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

适当的编码应该由插件处理,并且几乎肯定会进行POST,因此URL编码甚至不适用。

此外,您不需要在JavaScript字符串中转义斜杠,它们并不特殊,所以您可以在''中说'<\/td>'

我对jQuery-File-Upload一无所知,但修复你的逗号至少应该让你超越你的直接问题(以及新的和更有趣的问题!)。