来自asp.net webmethod的msg.d未定义

时间:2013-01-21 13:24:37

标签: c# jquery asp.net ajax webmethod

我正在尝试关注this article以使用jQuery AJAX从web方法中获取值。我已将其缩减为单输入形式。

事情是,它总是失败并且msg.d总是未定义的。在Firebug中,我可以看到POST和数据字符串格式正确。我不能,因为我的生活中弄清楚为什么这会一直失败。我的webmethod中设置的断点被点击,但页面在完全运行之前显示失败消息。

任何想法发生了什么?这是我的代码:

基本形式:

<div id="contact">
    <ul>
        <li><div>Name*</div>
        <input name="ctl00$ContentPlaceHolder1$txtName" type="text" id="ctl00_ContentPlaceHolder1_txtName" />
        </li>               
        </ul>
        <ul class="submit">
            <li>* required</li>
            <li class="submit_button">

        <input type="submit" name="ctl00$ContentPlaceHolder1$btnSubmit" value="Submit"     id="ctl00_ContentPlaceHolder1_btnSubmit" />
            </li>
        </ul>
   </div>

jQuery的:

<script type="text/javascript">

    jQuery(document).ready(function () {

        $("#ctl00_ContentPlaceHolder1_btnSubmit").click(function () {
            var name = $("#ctl00_ContentPlaceHolder1_txtName");
            $.ajax({
                type: "POST",
                dataType: "json",
                contentType: "application/json",
                url: "Default.aspx/SendEmail",
                data: "{'name':'" + name.val() + "'}",
                success: function (msg) {
                    alert("success");
                    alert(msg.d);
                },
                error: function (msg) {
                    alert("fail");
                    alert(msg.d);
                }
            });
        });

    });

</script>

的WebMethod:

[WebMethod]
public static string SendEmail(string name)
{
    return "success";
}

1 个答案:

答案 0 :(得分:-1)

您正在从服务器返回一个字符串,而不是AJAX dataType正在寻找的JSON。 String没有属性d

删除dataType选项并尝试alert(msg)