2009-06-09 2 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> 

Моя страница Способ идентификатор определяется следующим образом:

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

При нажатии на кнопку Get Date, я увидел дату вспышки на экране для во-вторых, но поскольку вся страница загружается, она исчезает, и когда я просматриваю ее в firebug, я вижу, что она делает 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

1

karim79 будет выполнять работу в Internet Explorer - но, чтобы убедиться, что он работает в Firefox и других браузеров, а также, вы, вероятно, хотите для добавления входного аргумента обработчику кликов, который примет событие click, и остановит событие.

$("#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

Смежные вопросы