jQuery Ajax& WebMethod Call

时间:2013-03-30 13:23:01

标签: jquery ajax webmethod

我试图通过使用jQuery.ajax点击aspx的codebehind文件中的一些标签来调用SendInfo方法。但是它总是进入'错误'部分,而不是成功,而字符串不是从方法返回的。

那么请告诉我,我在这里做错了什么?

刚开始学习ajax。

Index.aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type='text/javascript' src='../../Scripts/jquery-1.4.1.min.js'></script>
<script type="text/javascript" >
    $(document).ready(function () {
        $("#Result").click(function () {
            $.ajax({
                type: "POST",
                url: "Index.aspx/SendInfo",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $("#Result").text(msg.d);
                },
                error: function () {
                    $("#Result").text("adas");
                }
            });
        });
    });
</script>
<div id="Result">Click here for the time.</div>
</asp:Content>

Codebehind文件:

public class Index : ViewPage
{
    [WebMethod]
    public static string SendInfo()
    {
        return "Info actually sended";
    }
}

1 个答案:

答案 0 :(得分:0)

快速浏览一下我会说这可能是由于“dataType”参数被设置为“json”。因为这告诉它你正在期待一个JSON对象,所以它会尝试解析响应,因此它会因为它是纯文本而失败。

你可以完全删除“dataType”参数(以及空的“data”参数),jQuery会冒失败对所返回内容的猜测,在这种情况下应正确预测响应是纯文本。

您可能还需要指定AJAX位置的完全限定URL,并将success function中的“msg.d”更改为“msg”,但这取决于服务器上设置的特定选项(“ .d“是Microsoft推出的安全功能。)