【发布时间】:2013-01-04 13:38:14
【问题描述】:
我正在尝试关注this article 以使用 jQuery AJAX 从 webmethod 获取值。我已将其缩减为单输入表单。
问题是,它总是失败并且 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]
public static string SendEmail(string name)
{
return "success";
}
【问题讨论】:
-
失败信息是什么?
-
@lante:警报中的失败消息是“未定义”
-
你在使用 ASP.Net 2.0 吗?
-
您知道,您不能在错误方法中使用
alert(msg.d),因为第一个参数,您称为 msg 的不是像success方法那样的响应,它是 jqXHR 对象它没有d属性。这就是它发出未定义警报的原因。
标签: c# jquery asp.net ajax webmethod