1

这是我的html的片段:

<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>

My Page Method id 定义如下:

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

当我单击“获取日期”按钮时,我看到屏幕上的日期闪烁了一秒钟,但由于整个页面正在加载,它消失了,当我在萤火虫中查看它时,我看到它正在执行 POST,但很快就消失了。关于如何解决这个问题的任何想法?

4

2 回答 2

3

尝试从您的事件处理程序返回false :$("#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;
    });
于 2009-06-09T22:13:04.563 回答
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;
});
于 2009-06-09T22:23:29.050 回答