当用户点击提交按钮时,我要构建一个ajax调用,所以我已经包含了jquery,并且我编写了以下代码(取自jquery文档):
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function(){
$("Shareitem").click(function(e){
e.preventDefault();
$.ajax({type: "POST",
url: "/imball-reagens/public/shareitem",
data: { id: $("Shareitem").val(), access_token: $("access_token").val() },
success:function(result){
$("sharelink").html(result);
}});
});
});
</script>
HTML:
<div id="sharelink"></div>
[...]
<input type="hidden" name="id" value="" id="id"></dd>
<dd id="access_token-element">
<input type="hidden" name="access_token" value="xxxxxxxx" id="access_token"></dd>
<dt id="Shareitem-label"> </dt><dd id="Shareitem-element">
<input type="submit" name="Shareitem" id="Shareitem" value="UpdatedByPreviousAjaxCall"></dd></dl></form>
问题如下,执行提交操作但是ajax调用没有执行,因此表单执行请求的提交操作,而不是停留在同一页面并更新所需“div”的内容。
我错过了什么?我哪里错了? 提前感谢任何提示。
答案 0 :(得分:15)
您没有在按钮的ID之前添加#
。您的jquery代码中没有正确的选择器。所以jquery永远不会在你的按钮点击中执行。它直接提交了您的表单,没有传递任何ajax请求。
参见文档:http://api.jquery.com/category/selectors/
它是你的朋友。
试试这个:
如果要传递
的值,id: $("#Shareitem").val()
似乎是错误的
<input type="hidden" name="id" value="" id="id">
您需要更改此行:
id: $("#Shareitem").val()
通过
id: $("#id").val()
所有在一起:
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function(){
$("#Shareitem").click(function(e){
e.preventDefault();
$.ajax({type: "POST",
url: "/imball-reagens/public/shareitem",
data: { id: $("#Shareitem").val(), access_token: $("#access_token").val() },
success:function(result){
$("#sharelink").html(result);
}});
});
});
</script>