2013-05-08 5 views
0

мне нужно отправить один массив в контроллер рельсах с помощью JQuery AJAXОтправить JQuery массив с помощью AJAX в контроллере рельсы

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]" не имеет действительный корень):

ответ

0

Не могли бы вы console.log ваш массив? Это будет намного легче, и вы сможете проверить подэлементы, когда будете нажимать на него. В FireFox (с установленным плагином FireBug) или в Chrome нажмите F12, чтобы открыть инструменты dev и посмотреть консоль.

Я не думаю, что это будет работать для IE, но вы можете преобразовать объект JavaScript в JSON с JSON.stringify, так что вы можете отправить сбщ в формате JSON:

попробовать:

for(i=1; i<counter;i++){ 
     arr[i] = $('#textbox' + i).val(); 
} 
msg= JSON.stringify(arr) 

у вас есть ошибка из вашего приложения rails, но вы не отправили какой-либо код, где эта ошибка происходит.

Я не уверен, что делает rexml в рельсах, поэтому не может помочь вам с этим.

2

Чтобы выполнить запрос ajax POST через jquery, данные должны быть строкой.

$.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

Смежные вопросы