我是使用play框架和ajax进行web开发的新手,现在我想将表单中的字符串传递给带有ajax的控制器,但我不知道该怎么办。请问你能帮我吗?这是我的代码: HTML:
public class DataMatch extends Controller{
public String searchContentMatch (String search) {
// Search match
return "HI"+search;
}
}
控制器:
bot.on('message',function (data) {
if (data.user != "Uxxxxxx" && data.message === 'message'){
bot.postMessageToChannel('general', 'Yoooo');
}
答案 0 :(得分:0)
将其作为查询参数传递,因为它只是一个字符串。
var search="searchValue";
$.ajax({
url: "DataMatch/searchContentMatch?search="+search,
type:"GET",
cache: false,
dataType:"text",
success: function (responseData) {
s.innerHTML = s.innerHTML + '<li>'+responseData+'</li>';
}
});
答案 1 :(得分:0)
首先,在$.ajax()
的数据参数中,您必须构建一个查询字符串,因此正确的方法是将密钥(“搜索”)与其值(searchValue)连接起来。
然后,您既不需要脚本中的return false
语句,也不需要return
表单属性上的onsubmit
关键字。
最后,由于您正在使用jQuery,请利用其选择功能并将document.getElementById
替换为$
。
<form onsubmit="newSearch();" id="formId">
<input type="search" placeholder="Search for more" id="searchBar_chat">
</form>
<script type="text/javascript" >
function newSearch(){
var searchValue = $("#searchBar_chat").val();
$("#chatDialgue").append('<li>'+ searchValue +'</li>');
$("#searchBar_chat").val("");
$.ajax({
url: "DataMatch/searchContentMatch",
type:"GET",
cache: false,
dataType: "text",
data: "search=" + searchValue,
success: function (responseData) {
$("#chatDialgue").append('<li>' + responseData + '</li>');
}
});
}
</script>
答案 2 :(得分:0)
您应该使用Javascript router而不是在Javascript代码中对端点进行硬编码。这将允许您稍后在需要时更改端点名称。此外,您希望传递查询字符串参数,因此它直接在URL中传递。以下是使用反向路线的方法:
@helper.javascriptRouter("jsRoutes")(
routes.javascript.DataMatch.searchContentMatch
)
//HTML here
var endpoint = jsRoutes.controllers.DataMatch.searchContentMatch(searchValue).url;
$.ajax({
url: endpoint,
type:"GET",
cache: false,
success: function (responseData) {
s.innerHTML = s.innerHTML + '<li>'+responseData+'</li>';
}
});
答案 3 :(得分:0)
还有一件事,对于上一个答案,请不要忘记路线文件中的参数:
GET /api/search/:search controllers.DataMatch.searchContentMatch(search: String)