【问题标题】:Send jquery array via ajax into rails controller通过 ajax 将 jquery 数组发送到 rails 控制器
【发布时间】:2013-05-08 08:24:54
【问题描述】:

我需要通过 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('<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]”没有有效的根):

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以控制台记录您的阵列吗?这会容易得多,您可以在单击时检查子元素。在 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 中的作用,因此无法真正帮助您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 2014-06-10
        • 1970-01-01
        • 2011-10-30
        相关资源
        最近更新 更多