ASP.NET中的AJAX调用不会触发服务器端方法

时间:2015-03-15 13:30:15

标签: jquery asp.net ajax asp.net-ajax webmethod

我正在开发asp.net webforms,在从客户端进行ajax调用时无法解决问题。 我得到了客户端脚本:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
                $.ajax({
                    type: "GET",
                    url: "Default.aspx/getnewmails",
                    data: {},
                    dataType: "html",
                    success: function (str)
                    {
                        $("#div2").html(str);
                    }
                });
        });
    </script>

和服务器端方法,它在Default.aspx.cs中的字符串var中返回html:

   [WebMethod]
    public static string getnewmails()
    {

        string URI = "https://somewebsite.com/GetEmails.aspx";
        WebClient webClient = new WebClient();
        System.Collections.Specialized.NameValueCollection formData = new System.Collections.Specialized.NameValueCollection();
        try
        {
            formData["uname"] = "john.g";
            formData["upass"] = "12345";
            byte[] responseBytes = webClient.UploadValues(URI, "POST", formData);
            string Result = Encoding.UTF8.GetString(responseBytes);
            return Result;
        }
        catch
        {
            return "";
        }

    }

出于某种原因,在进行ajax调用时,我得到Default.aspx的同一页面的html而不是我期望从getnewmails方法得到的Html ... 此外,在服务器端方法中放置断点时,它不会被击中。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我已更新您的代码,它适用于我。

更新代码:

$.ajax({
            type: "POST",
            url: "Default.aspx/getnewmails",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $("#div2").html(data.d);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                $("#div2").html('error: ' + xhr.status + ' ' + thrownError);
            }
        });