我对此代码有一种奇怪的行为:
<script type="text/javascript">
function get()
{
alert("gggg");
jQuery.get (
"http://localhost:8080/c/portal/json_service",
{
serviceClassName: "com.liferay.test.service.TrabajadorServiceUtil",
serviceMethodName: "findByName",
servletContextName: "TrabajadorPlugin-portlet",
serviceParameters: "[param]",
param : document.getElementById("nombre")
}
);
}
</script>
<div>
<form>
<input type="text" id="nombre" value="<%=searching%>"/>
<input type="button" value="Submit" onClick="javascript:get()"/>
</form>
</div>
按下“提交”按钮后,Liferay门户被阻止。显示消息“gggg”的弹出窗口,但单击确定后,页面将被阻止。
如果我删除'param:document.getElementById(“nombre”)'行,它就不会阻止。
任何人都可以解释一下错误或这种行为的原因在哪里?
提前致谢,
拉法
答案 0 :(得分:4)
问题在于你试图将整个DOM元素作为param
的值传递,jQuery不会喜欢它。哪种类型的元素具有ID nombre
,以及您想要该元素的哪些属性?如果它是某种输入,你可能想要value
属性,所以你可以这样做:
param : document.getElementById("nombre").value
答案 1 :(得分:1)
更新答案:
通过多一点思考,你应该以完全不同的方式做到这一点。您在用户点击提交按钮时发送数据,但请记住,如果用户在输入文本框中输入时输入,表单将提交,但您的代码将无法捕获。
更强大的解决方案是这样做:
<div>
<form id="nombre_search">
<input type="text" id="nombre" value="<%=searching%>"/>
<input type="submit" value="Submit"/>
</form>
</div>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$("#nombre_search").submit(function(){
$.get("http://localhost:8080/c/portal/json_service", {
serviceClassName: "com.liferay.test.service.TrabajadorServiceUtil",
serviceMethodName: "findByName",
servletContextName: "TrabajadorPlugin-portlet",
serviceParameters: "[param]",
param : $("#nombre").val()
});
return false;
});
});
</script>
您的代码更改:
submit
按钮,而不只是button
。$(document).ready
块内。form
时运行,而不是在点击button
时运行。希望这有帮助, 桑德罗