2013-07-15 2 views
0

Таким образом, я могу получить набор результатов в моем контроллере через SQL и передать его в GSP, я тогда придерживайтесь этих данных в скрытое поле и выглядит так: -Как пройти карты Grails в JQuery

[ 
{forms_idx=0, form_id=21, events_idx=0, event_id=110, object_id=2, value=null}, 
{forms_idx=0, form_id=21, events_idx=1, event_id=109, object_id=3, value=null}, 
{forms_idx=1, form_id=22, events_idx=0, event_id=112, object_id=2, value=null}, 
{forms_idx=1, form_id=22, events_idx=1, event_id=111, object_id=1, value=null}, 
{forms_idx=2, form_id=23, events_idx=0, event_id=114, object_id=2, value=null}, 
{forms_idx=2, form_id=23, events_idx=1, event_id=113, object_id=3, value=null} 
] 

я затем передать это через к функции JQuery через это: -

$(document).ready(function() { 
testing($("#myresults").val()); 
}); 

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

Мой вопрос в том, как мне поместить простую петлю какого-то типа в мою функцию теперь, чтобы обратиться к результатам в данных, которые я передал? Я пробовал каждый и т. Д., Но он не работает, и я, вероятно, пропустил что-то действительно основное, любые предложения? Это то, что я в настоящее время пытается ...

function testing(results){ 
    $.each(results, function(index, value){ 
     alert(index + " " + value) 
    }) 
} 

Я также попытался это, но только что получил значение undefined назад ...

function testing(results){ 
alert(results); 
} 

ответ

1

Так что проблема здесь в том, что спрятано den field содержит строку данных, в то время как вы хотите использовать ее, как это было бы JSON. Ваши варианты:

  • Есть отдельный метод в контроллер, который возвращает JSON данные:

    import grails.converters.JSON; 
    
    class MyController { 
        def showData() { 
         def myData = [some:'map'] 
         render myData as JSON 
        } 
    } 
    

    Затем в JavaScript:

    $.getJSON('my/showData',function(jsonData){ 
        console.log("Data ready to be used: " + JSON.stringify(jsonData)); 
    }); 
    
  • или распечатать JSON в JavaScript переменной вместо скрытых Поля:

    <%@ page import="grails.converters.JSON" %> 
    <r:script disposition="head"> 
        var myData = ${dataFromModel as JSON}; 
        console.log("Data ready to be used: " + JSON.stringify(myData)); 
    </r:script> 
    
  • Или персонализированный код JavaScript парсер, чтобы преобразовать вашу строку JSON объект

    // TODO create parser :) 
    
+0

Извините за задержку в ответе, но печать из JSON в яваскрипта переменного, вместо того, чтобы использовать скрытое поле, кажется, делает именно то, что мне нужно , большое спасибо! :) – MorkPork

0

Try:

<%@ page import="import grails.converters.JSON" %> 
$(document).ready(function() { 
    testing($("#myresults").val().encodeAsJSON()); 
}); 

хотя он было бы целесообразнее поместить ваши данные в модель, а не в скрытое поле ...

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