Как вызвать функцию на стороне сервера, используя jquery без обновления страницы? - PullRequest
1 голос
/ 02 мая 2009

Как вызвать функцию на стороне сервера, используя jquery без обновления страницы?

Ответы [ 5 ]

5 голосов
/ 02 мая 2009

Используйте AJAX:

$.get('somepage.aspx', {foo: 'bar'}, function(data){
  alert('the page returned this: '+data); 
 });

Затем настройте somepage.aspx для выполнения функции и возврата данных (при необходимости).

Подробнее о jQuery AJAX смотрите: http://docs.jquery.com/Ajax

2 голосов
/ 02 мая 2009

Вот как можно вызвать пользовательский ASP.NET PageMethod с помощью jQuery и Microsoft Ajax:

<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script type="text/javascript" src="http://www.json.org/json2.js"></script>
</head>
<script runat="server">
    /// <summary>
    /// A custom PageMethod that will echo back the argument
    /// </summary>
    /// <param name="argument">some arbitrary string</param>
    /// <returns></returns>
    [System.Web.Services.WebMethod]
    public static string MyPageMethod(string argument)
    {
        return "hello " + argument;
    }    
</script>

<script type="text/javascript">
function callPageMthodWithMicrosoftAjax(argument) {
    PageMethods.MyPageMethod(argument, function(result) {
        document.getElementById('result').innerHTML = result;
    }, function(error) {
        alert(error.get_message());
    });
}

function callPageMthodWithjQueryAjax(argument) {
    jQuery.ajax({
        url: '/default.aspx/MyPageMethod',
        type: 'post',
        contentType: 'application/json',
        data: JSON.stringify({ argument: argument }),
        dataType: 'json',
        processData: false,
        success: function(data, textStatus) {
            jQuery('#result').html(data.d);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            var jsonError = JSON.parse(XMLHttpRequest.responseText);
            alert(jsonError.Message);
        }

    });
}
</script>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true" />    
        <a href="#" onclick="callPageMthodWithMicrosoftAjax('Microsoft Ajax')">call PageMethod with Microsoft Ajax</a>
        <br />
        <a href="#" onclick="callPageMthodWithjQueryAjax('jQuery')">call PageMethod with jQuery</a>
        <div id="result"></div>
    </form>
</body>
</html>
1 голос
/ 02 мая 2009

Я видел, что вы используете asp.net, поэтому у вас есть несколько вариантов:

  1. Чтобы получить любой ресурс, кроме текущей страницы aspx, используйте $ .get (). Это может быть файл изображения или вывод другой страницы aspx.
  2. Если вам нужно совершить круговую поездку по вашей текущей странице и использовать защиту вашей текущей страницы и т. Д., То вы можете вызвать веб-метод . Обратите внимание, что ваш ViewState не будет доступен во время вашего вызова веб-метода. Статья, на которую я ссылаюсь, взята из статьи Encosia Дэйва Уорда, и у него есть обширная серия статей о том, как делать вызовы AJAX с помощью jQuery и Asp.net.
1 голос
/ 02 мая 2009

если у вас есть только серверные методы, которые вам нужно вызывать, используйте WebMethod на стороне сервера и ajax на клиенте. чтение это может быть полезным.

прощай

0 голосов
/ 30 марта 2011

Используйте метод Jquery .ajax ().

$.ajax({
  url: "test.aspx/method",
  context: document.body,
  success: function(){
    $(this).addClass("done");
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...