jquery ajax调用导致页面刷新

时间:2011-06-25 07:49:02

标签: javascript jquery ajax

我的HTML页面中有一个按钮,它不属于任何形式。

<input type='button' id='submitter' value='add'/>

我有一个点击处理程序:

$('#submitter').click(function(e) {
    e.preventDefault();
    e.stopPropagation();
    var args={}
    $.get('notexists.php', args, function() {alert('what?');}, 'json')
         .error(function(){ alert('error'); });

    return false;
}

现在,notexists.php不存在,因此点击应提醒error。但出于某种原因,我点击按钮刷新页面!

我试图找出问题的一些实验:

  1. 从处理程序中删除了所有内容(没有返回false,没有阻止默认,没有停止道具,没有jquery帖子调用 - 什么都没有) - 页面在点击时没有刷新,它不应该。该按钮不是提交按钮,它不属于任何形式。
  2. 删除了.h。$。post调用 - 无刷新
  3. 启用了firebug的“break on error”功能并尝试点击 - 再次刷新。所以没有错误。
  4. 将帖子网址更改为存在且有效的内容 - 仍在刷新
  5. 在$ .post调用后添加了“alert” - 它没有被调用。好像$ .post的执行中断,但没有错误(实验3)。
  6. 将输入更改为具有相同ID的“div”。相同的结果 - 页面被刷新。
  7. 有人可以帮忙吗?

    PS:我在这个应用程序的许多其他部分使用$ .post,并且它在任何地方都按预期工作。

2 个答案:

答案 0 :(得分:1)

您是否在尝试绑定事件时检查了$('#submitter').length?也许你在dom中有重复的id?您是否在关闭正文标记之前或在jquery doc ready块中运行脚本?

发布更全面的代码示例将有助于消除我提出的问题。

答案 1 :(得分:1)

我相信你的选择器没有选择按钮,因此没有应用事件处理程序。

通过执行以下操作来测试您的选择器:

 $("#submitter").val('Test');