如何在没有页面刷新的情况下使用jquery调用服务器端功能?

时间:2009-05-02 10:05:50

标签: asp.net jquery ajax

如何使用jquery wth out page refresh调用服务器端函数?

5 个答案:

答案 0 :(得分:5)

使用AJAX:

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

然后设置somepage.aspx来执行该函数并返回数据(如果需要)。

有关jQuery AJAX的更多信息,请参阅:http://docs.jquery.com/Ajax

答案 1 :(得分:2)

以下是使用jQuery和Microsoft Ajax调用自定义ASP.NET PageMethod的方法:

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

答案 2 :(得分:1)

如果您需要调用仅服务器方法,请在服务器端使用WebMethod,在客户端使用ajax。 阅读this我很有用。

再见

答案 3 :(得分:1)

我看到你正在使用asp.net,所以你有几个选择:

  1. 要获取当前aspx页面以外的任何资源,请使用$ .get()。这可能是一个图像文件或另一个aspx页面的输出。
  2. 如果您需要往返当前页面并使用当前页面的安全性等,那么您可以call a web method。请注意,在调用Web方法期间,您的ViewState将不可用。我链接的文章来自Dave Ward的Encosia,他有一个关于使用jQuery和Asp.net进行AJAX调用的大量系列文章。

答案 4 :(得分:0)

使用Jquery .ajax()方法。

$.ajax({
  url: "test.aspx/method",
  context: document.body,
  success: function(){
    $(this).addClass("done");
  }
});