У вас нет запятых в нужных местах в вашем 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. Все, что вам нужно сделать, это убедиться, что строка не содержит неэкранированных одинарных кавычек, так что, вероятно, сработает что-то вроде этого (при условии, что JavaScript проходит через ERB):
value: '<%= cookies[session_key_name].gsub(/'/, "\'") %>'
Надлежащая кодировка должна обрабатываться плагином, и он почти наверняка выполняет POST, так что кодировка URL даже не применяется.
Кроме того, вам не нужно избегать косых черт в строках JavaScript, они не являются специальными, поэтому вы можете просто сказать '</td>'
, где вы говорите '<\/td>'
.
Я ничего не знаю о jQuery-File-Upload, но исправление запятых должно, по крайней мере, помочь вам справиться с вашей непосредственной проблемой (и к новым и более интересным проблемам!).