2013-08-05 2 views
0

Контроллер:Перебор объекта JSON в Ajax вызова метода

def get 
    @projects = Project.get(params[:username]) 
    render json: @projects.to_json 
    end 

возвращает массив как объект JSON для вызова Ajax, как показано ниже

Ajax вызова:

endpoint = ROOT_PATH + '/projects/get/1'; 
    alert("hello") 
    $.ajax({ 
     url : endpoint, 
     type : "get", 
     //dataType : "data", 
     success : function(data) { 
      alert("success") 

      $.each(data, function(index,value) { 
       alert("hello"); 
       $("#list_projects").append(
       "" 
       ); 

      }); 

     } 

    }); 

Мой Аякса вызов является но я не могу пройти через массив, возвращенный с контроллера. Пожалуйста, помогите мне в цикле json object.Thanks!

+0

Можете ли вы показать нам JSON, который возвращается в свой браузер? Возможно, вам понадобится использовать что-то вроде Firebug или Chrome Developer Tools, чтобы просмотреть необработанные данные в HTTP-ответе. – crush

+0

Вы зарегистрировали 'data' на консоли, чтобы узнать, содержит ли он что-нибудь? –

+0

Я думаю, что метод '' 'def get''' не является js, поэтому вы должны указать его. Вы уверены, что получаете' '' json''' от контроллера? Также, какова именно ошибка, которую вы получаете? почему вы думаете, что не можете зацикливаться? вы ничего не делаете с переменными '' 'index, value''' является функцией успеха, так что вы ожидаете достичь? – alonisser

ответ

1

Вы можете сделать следующее (разобрать ответ как JSON):

$.ajax({ 
    url : endpoint, 
    type : "get", 
    success : function(data) { 
       var parsed_data = $.parseJSON(data); 
       $.each(parsed_data, function(index,value) { 
       alert("hello"); 
       $("#list_projects").append(""); 
       }); 
      } 
}); 

Или непосредственно использовать метод JQuery getJSON():

$.getJSON('/projects/get/1', {}, function(data) { 
    $.each(data, function(index, element) { 
     alert(element); 
    }); 
}); 
Смежные вопросы