2017-02-13 1 views
0

У меня есть маршрут Ajax, который принимает необязательную строку; Я получаю эту строку из тега select HTML, но когда я передаю параметр в URL-адрес, он не регистрируется как переменная.Передача параметра в Ajax url в Scala Play

$("#submit-button").on('click', function() { 

var getOption = $("#option").find(":selected").text(); 
var idToGet = $("#hi").val(); 
    $.ajax({ 
     url: '@routes.ApplicationController.getStuff(Some(getOption))', //requires an option[string] 
     type: 'GET', 
     data: {get_param: idToGet}, 
     dataType: 'json', 
     success: function (data) { 
     $.each(data, function (index, element) { 
     alert("hi") 
     }); 
    } 
    }); 
}); 

getOption не может быть передан в маршрут URL. Я попытался реализовать его как функцию и вызвать его, но он не работает. Есть идеи?

ответ

1

Для GET, единственный способ - использовать absoluteURL и queryparam.

предполагая свое имя парам является option:

$("#submit-button").on('click', function() { 

var getOption = $("#option").find(":selected").text(); 
var idToGet = $("#hi").val(); 
    $.ajax({ 
     url: '@{routes.ApplicationController.getStuff(None).absoluteURL()}?option='+getOption, //requires an option[string] 
     type: 'GET', 
     data: {get_param: idToGet}, 
     dataType: 'json', 
     success: function (data) { 
     $.each(data, function (index, element) { 
     alert("hi") 
     }); 
    } 
    }); 
}); 

Недостаток заключается в том, если вы измените имя вашего параметра в контроллере Scala, вы должны изменить его в представлении.

+0

Спасибо! Каким будет синтаксис для URL-адреса, если бы у меня было несколько вариантов? – DarthBinks911

+0

'? Option = opt1 & option = opt2' –

+0

Это должно быть сделано с помощью Javascript. Вы можете сделать что-то вроде этого: 'var selectedOptions = $ ('# option'). Val(); var queryparam =" "; selectedOptions.forEach (функция (запись) { queryparam + =" option = "+ entry +" & "; });' –

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