通过ajax将jquery数组发送到rails控制器

我需要通过jquery ajax将一个数组发送到rails控制器

jquery代码

$(document).ready(function(){ var counter = 2; $("#addButton").click(function () { var newTextBoxDiv = $(document.createElement('div')) .attr("id", 'TextBoxDiv' + counter); newTextBoxDiv.after().html(' '); newTextBoxDiv.appendTo("#TextBoxesGroup"); counter++; }); $("#getButton").click(function () { var fd = new FormData($("#movie-form")[0]); var name = document.getElementById("file").files[0].name; var arr = []; var msg = ''; for(i=1; i<counter;i++){ msg += "\n Textbox #" + i + " : " + $('#textbox' + i).val(); arr[i] = $('#textbox' + i).val(); } $.each(arr,function(index, item) { alert(index); alert(item); } ); fd.append( 'file', name); fd.append( 'file22', name); $.ajax({ url: '/create', data: {fd:fd,arr:arr}, processData: false, contentType: false, type: 'POST', success: function(data){ alert(data); } }); return false; }); 

但它显示错误

解析请求参数时发生错误。 内容:REXML :: ParseException(文档“[object Object]”没有有效的根目录):

你可以console.log你的arrays吗? 这将更加容易,您可以在单击它时检查子元素。 在FireFox(安装了FireBug插件)或Chrome中按F12打开开发工具并查看控制台。

我认为这不适用于IE,但您可以使用JSON.stringify将JavaScript对象转换为JSON,这样您就可以将您的msg作为JSON发送:

尝试:

 for(i=1; i 

您遇到的错误来自您的rails应用程序,但您没有发布任何错误发生的代码。

我不确定rexml在rails中做了什么,所以不能真正帮助你。

要通过jquery执行ajax POST请求,数据必须是一个字符串。

 $.ajax({ url: "/create", type: 'POST', contentType: 'application/json', dataType: 'json', data: JSON.stringify(formData), function(data){ alert(data) } }); 

注意在IE6 / 7中未定义JSON。 如果您需要定位这些浏览器,请使用以下命令: https : //github.com/douglascrockford/JSON-js