Play framework 2.4.x. На моей домашней странице нажата кнопка, которая выполняет некоторый код через Ajax и возвращает результаты под кнопкой без загрузки новой страницы. Результаты ожидают ввода пользователем некоторого текста в поле и нажмите «отправить». Эти результаты выглядят следующим образом:Play framework написать Action с Ok (...), который не загружает новую страницу
<li class="item">
<div>
<h3>Email: </h3>
<a>@email.tail.init</a>
<h3>Name: </h3>
<a>@name</a>
</div>
<div>
<h3>Linkedin: </h3>
<form class="linkedinForm" action="@routes.Application.createLinkedin" method="POST">
<input type="number" class="id" name="id" value="@id" readonly>
<input type="text" class="email" name="email" value="@email" />
<input type="text" class="emailsecondary" name="emailsecondary" value="" />
<input type="text" class="name" name="email" value="@name" />
<input type="text" class="linkedin" name="linkedin" value="" />
<input type="submit" value="submit" class="hideme"/>
</form>
</div>
<div>
<form action="@routes.Application.delete(id)" method="POST">
<input type="submit" value="delete" />
</form>
</div>
</li>
Наряду с некоторыми JQuery, который скользит вверх Ли после представления:
$(document).ready(function(){
$(".hideme").click(function(){
$(this).closest('li.item').slideUp();
});
});
Однако, так как форма POST проходит внутри действий, который должен возвращение ОК (. ..) или Redirect (...) Я не могу заставить страницу не перезагружать или перенаправлять. Сейчас мое действие выглядит следующим образом (который не компилируется):
newLinkedinForm.bindFromRequest.fold(
errors => {
Ok("didnt work" +errors)
},
linkedin => {
addLinkedin(linkedin.id, linkedin.url, linkedin.email, linkedin.emailsecondary, linkedin.name)
if (checkURL(linkedin.url)) {
linkedinParse ! Linkedin(linkedin.id, linkedin.url, linkedin.email, linkedin.emailsecondary, linkedin.name)
Ok(views.html.index)
}else{
Ok(views.html.index)
}
}
)
Можно ли вернуть Ok (...) без перенаправления или перезагрузки? Если нет, как бы вы делали форму POST во время пребывания на той же странице?
EDIT: Вот моя попытка при обработке данных формы с JQuery до сих пор:
$(document).ready(function(){
$(".linkedinForm").submit(function(event) {
var formData = {
'id' : $('input[name=id]').val(),
'name' : $('input[name=name]').val(),
'email' : $('input[name=email']).val(),
'emailsecondary' : $('input[name=emailsecondary]').val(),
'url' : $('input[name=url]').val()
};
jsRoutes.controllers.Application.createLinkedin.ajax({
type :'POST',
data : formData
})
.done(function(data) {
console.log(data);
});
.fail(function(data) {
console.log(data);
});
event.preventDefault();
};
});
не пытались осуществить это еще, но только от чтения вашего ответа, могу ли я отправить информацию о форме в мою Akka Актер, как я с моим текущим кодом? – plambre
@plambre Да. Попробуйте выполнить поиск Google для способов отправки данных формы вручную, обработайте его, как обычно, в Scala, а затем верните что-то разумное, зная, что javascript будет обрабатывать ответ (например, было бы легче ответить json, а не html). – Zeimyth
Из моего краткого прочтения вопросов других людей кажется, что они прикрепляют форму формы jquery к идентификатору формы ... мое приложение для игры генерирует от 0 до 300 отдельных форм на одной странице, поэтому они надевают У меня есть уникальный идентификатор (они являются class = "linkedinForm"). Это будет проблемой? – plambre