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一无所知,但修复你的逗号至少应该让你超越你的直接问题(以及新的和更有趣的问题!)。
| | |