C# asp.net webmethod中的msg.d未定义
我尝试使用jQueryAjax从webmethod中获取一个值。我把它简化为一个输入表单 问题是,它总是失败,msg.d总是未定义。在Firebug中,我可以看到帖子和数据字符串的格式正确。我一辈子也弄不明白为什么这样一直失败。my webmethod中设置的断点被命中,但页面在完全运行之前显示失败消息 知道发生了什么事吗?这是我的密码: 基本形式:C# asp.net webmethod中的msg.d未定义,c#,jquery,asp.net,ajax,webmethod,C#,Jquery,Asp.net,Ajax,Webmethod,我尝试使用jQueryAjax从webmethod中获取一个值。我把它简化为一个输入表单 问题是,它总是失败,msg.d总是未定义。在Firebug中,我可以看到帖子和数据字符串的格式正确。我一辈子也弄不明白为什么这样一直失败。my webmethod中设置的断点被命中,但页面在完全运行之前显示失败消息 知道发生了什么事吗?这是我的密码: 基本形式: <div id="contact"> <ul> <li><div>Name
<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>
您正在从服务器返回字符串,而不是像AJAX
dataType
所寻找的那样返回JSON。字符串没有属性d
删除
dataType
选项并尝试alert(msg)
失败消息是什么?@lante:alert中的失败消息是“未定义”的,您是否有可能使用ASP.Net 2.0?正如您所知,您不能在error方法中使用alert(msg.d)
,因为第一个参数,您所调用的msg不是像success
方法那样的响应,而是没有d
属性的jqXHR对象。这就是为什么它会发出未定义的警报。我已经删除了datatype参数,但警报(msg)现在返回[object object]代码,显示的是字符串,警报表示您正在获取一个对象。。。使用console.log(msg)
并检查浏览器控制台中的数据。。。你在那里看到了什么?还可以在控制台中检查完整的请求并查看实际的响应Ext我有返回字符串的webmethods,它们可以与JSON和Ajax配合使用..好。。您收到的是来自AJAX错误的警报,而不是来自成功的警报readyState=0
表示您没有连接到服务器文件,我肯定正在命中SendEmail方法中设置的断点。我还可以看到,我正在用相同的方法将name.val()传递到name参数中。这一切都应该在本地进行,不是吗?这个项目还没有启动。
<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";
}