由于某种原因,jQuery没有加载我的php文件。单击该按钮,页面就会刷新。我已经验证了jQuery正在工作,点击功能也在工作。一旦它到达$.post
,它似乎不调用该文件,并通过暂停和回显结果。php文件的目录是正确的。我很茫然。什么好主意吗?
// HTML Code
<input id="doit" class="medium blue button" type="submit" name="doit" value="Sign in">
//jQuery code:
$('#doit').click(function(){
$('#fullscreen').show();
$.post('./delete-misc/test-ajax-code.php', function(data){
$('#fullscreen').hide();
alert(data);
})
});
// Php code (test-ajax-code.php)
<?php
sleep(10);
echo "Done";
?>
尝试删除URL开头的点。
$.post('/delete-misc/test-ajax-code.php', ...
由于缺乏经验,我无法详细解释URL路径中的点是如何工作的,但我会把它做成一个社区wiki,以便让有人解释它。
EDIT:我问了一个关于这个话题的问题,答案很好:在URL中点是什么意思?
更改按钮类型。
所以,不用这个:
<input id="doit" ... type="submit" ... />
你应该有这个:
<input id="doit" ... type="button" ... />
为什么?因为提交按钮将触发表单提交,表单将转到另一个页面。但是按钮什么也不做,只做你编程(用js)要做的事情。
另一个解决方案是防止javascript中按钮点击的默认行为,所以你应该有:
$('#doit').click(function(){
$('#fullscreen').show();
$.post('./delete-misc/test-ajax-code.php', function(data){
$('#fullscreen').hide();
alert(data);
});
return false; //This does the trick!!!
});
为什么?在jquery事件中返回false
'取消'默认行为,所以表单不会被提交
希望这对你有帮助。欢呼声
尝试更改为type button:
<input id="doit" class="medium blue button" type="button" name="doit" value="Sign in">
您需要在提交处理程序中返回false
。如果不这样做,表单将在处理程序返回后像往常一样提交。
您刚刚忘记了;
后结束您的$.post
;)。
试试这个,它个人工作:
$('#doit').click(function(){
$.post('./delete-misc/test-ajax-code.php', function(data){
alert(data);
});
});
删除提交按钮的name属性并尝试。我以前也遇到过类似的问题,删除name属性是一种技巧。(因为我是通过jQuery提交发布的数据,所以我不需要name属性)。
我仍然想知道为什么它在当时有效?