2015-10-26 8 views
0

У меня есть приложение Rails, где у меня есть контроллер, который возвращает данные в формате JSON:Проблема отладки getJSON вызова

respond_to do |format| 
    format.html { render :html => data } 
    format.json { render :json => data.to_json } 
end 

Если я загружаю это через браузер все это хорошо.

У меня есть простая форма, где я пытаюсь проверить данные, введенные с помощью JSON. Пока я застрял в том, чтобы заставить JSON работать.

Вот мой JS (кофе сценарий):

$(document).ready -> 
    $('#validate-data').click -> 
    alert "hello!" 
    $.getJSON '/mycontroller/data/myparameter', (data) -> 
     obj = data 
     msg = [] 
     for i of obj 
     msg.push i + ' = ' + obj[i] 
     alert msg.join('\n') 
     return 
    return 
    return 

Когда я нажимаю мою кнопку Validate я получаю hello! всплывающее затем после немного паузы я получаю всплывающее окно с 0 = [object Object].

Мои результаты HTTP вызова в данных, как это:

[ { "query": "myparameter", "response": { "status": "ok", "err": [], etc... 

я получил впечатление, что после того, как getJSON называют данные разобраны, и вы могли бы просто назвать alert data.response.status, и вы получите всплывающее "ok"

Я подозреваю, что у меня отсутствует что-то очевидное или тривиальное, или я вообще не понимаю этого.

+0

Кажется, вы повторяете данные неправильно. Какую часть «данных» вы хотите получить? –

+0

Я добавил, что для i loop из другого сообщения, которое я видел, чтобы попытаться просто подтвердить, что я действительно получаю данные из моего запроса JSON. Например, я пытался просто получить этот «статус»: «ok» для отображения. Я могу заставить результат быть «статусом»: «не удалось» подтвердить, что он работает. –

+0

Итак, в чем проблема, которую вы сейчас имеете? –

ответ

1

Я вижу из вашего вопроса, упомянутого data, у вас есть хэш внутри массива.

[ { "query": "myparameter", "response": { "status": "ok", "err": [ 

Вы обращаетесь к нему неправильно, поэтому вы не получаете результат, как вы ожидали от него. Вы должны сделать data[0].response.status, к которому вы хотите получить доступ, как вы сказали в своем comment.

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