2009-06-09 55 views
1

这里是我的HTML的一个片段:为什么这个JQuery调用asp.net pagemethod加载整个页面?

<input id="btnGetDate" type="submit" value="Get Date" /> 
    <div id="Result"></div> 

<script type="text/javascript"> 

    $(document).ready(function() { 

     $("#btnGetDate").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "Date.aspx/GetDate", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        $("#Result").text(msg.d); 
       } 
      }); 
     }); 
    }); 

</script> 

我的页面方法ID定义如下:

[System.Web.Services.WebMethod] 
    public static string GetDate() 
    { 
     return DateTime.Now.ToString(); 
    } 

当我点击获取日期按钮,只见日期在屏幕上闪烁的第二,但整个页面加载后,它消失了,当我在萤火虫中查看它,我发现它正在做POST,但很快就消失了。任何想法如何解决这个问题?

回答

3

尝试从$("#btnGetDate").click()事件处理程序返回

$("#btnGetDate").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "Date.aspx/GetDate", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       $("#Result").text(msg.d); 
      } 
     }); 
     return false; 
    }); 
+0

伟大的,这是做到了。谢谢。 – Xaisoft 2009-06-09 22:16:30

1

karim79的解决方案将做在Internet Explorer中的工作 - 而是要确保它在Firefox和其他浏览器的工作原理,以及,你可能希望将输入参数添加到将采用单击事件的单击处理程序中,并停止该事件。

$("#btnGetDate").click(function(ev) { 
    ev.stopPropagation(); 
    $.ajax({ 
     type: "POST", 
     url: "Date.aspx/GetDate", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      $("#Result").text(msg.d); 
     } 
    }); 
    return false; 
}); 
+0

它实际上在Firefox中工作,但你的想法也很好。 – Xaisoft 2009-06-09 22:59:32

相关问题