我试图在每次按键时将这个简单的输入传递给 ajax 处理程序,然后传递给 Controller :
<portlet:resourceURL var="resourceURL">
</portlet:resourceURL>
<form id="busq" method="POST">
<input id="busqueda" name="param1" type="text" onkeypress="buscar()"/>
</form>
这是我的 ajax 调用。它似乎工作正常:它发送 POST 请求中的参数,并从服务器检索一些数据:
var busq = document.getElementById("busqueda").value;
console.log("Searching for: "+busq);
AUI().use('aui-io-request', function(A){
A.io.request('${resourceURL}', {
method: 'post',
data: {
parametro: busq
},
on: {
success: function() {
console.log("RESULT: "+this.get('responseData'));
},
error: function(){
alert("Error");
}
}
});
});
这就是我在 Controller 中读取它的方式。它当前检索一个空字符串:
String datos = ParamUtil.get(req, "param2", StringPool.BLANK);
我尝试了以下所有方法:
- 使用命名空间
- 设置为 false(当前状态)。
- 更改变量名称。
- 使用 ParamUtil.getString()。
- 等等...
没有任何作用。我想获取 Controller 中的输入值,这样我就可以过滤搜索,但它永远不会到达那里(所以我得到所有查询信息而不进行任何过滤)。
知道这里出了什么问题吗?
最佳答案
您在获取值时使用了错误的参数名称: String datos = ParamUtil.get(req, "param2", StringPool.BLANK);
在您的 Controller 中尝试以下代码: String datos = ParamUtil.get(req, "parametro", StringPool.BLANK);
关于javascript - Ajax 请求问题 (Liferay),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661504/