我需要通过jquery ajax
将一个数组发送到rails控制器jquery CODE
$(document).ready(function(){
var counter = 2;
$("#addButton").click(function () {
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<input type="text" placeholder="Role" name="Role' +
counter +
'" id="textbox' + counter + '" value="" > <input type="text"
placeholder="Search" name="search' + counter +
'" id="se" value="" >');
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]”没有有效的根目录):
答案 0 :(得分:2)
要通过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
答案 1 :(得分:0)
你可以console.log你的阵列吗?这将更加轻松,您可以在单击它时检查子元素。在FireFox(安装了FireBug插件)或Chrome中按F12打开开发工具并查看控制台。
我不认为这适用于IE,但您可以使用JSON.stringify将JavaScript对象转换为JSON,这样您就可以将您的msg作为JSON发送:
尝试:
for(i=1; i<counter;i++){
arr[i] = $('#textbox' + i).val();
}
msg= JSON.stringify(arr)
您遇到的错误来自您的rails应用,但您没有发布任何错误发生的代码。
我不确定rexml在rails中做了什么,所以无法帮助你解决这个问题。