ASP.NET jQuery Ajax调用代码隐藏方法

我对Web开发陌生,但在开发方面有很多经验。 我有一个ASP页面,其中包含一些输入字段和一个提交按钮。 这个提交按钮纯粹调用$ .ajax,我打算在代码隐藏文件中调用一个方法。 但是,我注意到了两件有趣的事情。 首先,无论向其提供什么数据,ajax调用都会成功。 其次,responseText字段是整个页面的html源代码。

我已经阅读了这篇文章和其他指向webconfig的文章,但这些解决方案似乎无法解决我的问题。

这是asp页面:

       
  • Name:
  • Attending: Yes No
  • Return Address:

背后的代码:

 using System; using System.Web.Services; using System.Web.UI; namespace TestAspStuff { public partial class _Default : Page { protected void Page_Load(object sender, EventArgs e) { } [WebMethod] public static string OnSubmit(string name, bool isGoing, string returnAddress) { return "it worked"; } } } 

和JavaScript:

 function submit() { var name = "my name"; var isAttending = true; var returnAddress = "myEmail@gmail.com"; SendMail(name, isAttending, returnAddress); } function SendMail(person, isAttending, returnEmail) { var dataValue = { "name": person, "isGoing": isAttending, "returnAddress": returnEmail }; $.ajax({ type: "POST", url: "Default.aspx/OnSubmit", data: dataValue, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, complete: function (jqXHR, status) { alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText); } }); } 

现在,我注意到我可以将url属性更改为我想要的任何内容,并且永远不会调用error方法,并且状态是成功的,responseText是整个html页面。 我的webconfig包含所有相应的部分(包括htmlModule部分)。 我在.Net 3.5工作。 我很感激任何帮助,而且,我真的很陌生,所以其他人很明显对我来说很明显。 如果有更好的方法(从JavaScript调用asp.net代码隐藏方法,那就是),请随意发布。 谢谢!!!

首先,您可能想要添加一个返回false; 在JavaScript中的Submit()方法的底部(因此它会停止提交,因为您在AJAX中处理它)。

您将连接到完整的事件,而不是成功事件 – 这是一个显着的差异,这就是您的调试结果不符合预期的原因。 此外,我从来没有让签名方法与你的匹配,我总是提供contentType和dataType。 例如:

 $.ajax({ type: "POST", url: "Default.aspx/OnSubmit", data: dataValue, contentType: 'application/json; charset=utf-8', dataType: 'json', error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, success: function (result) { alert("We returned: " + result); } }); 

这也没有解决我的问题,所以我稍微改变了参数。
这段代码对我有用:

 var dataValue = "{ name: 'person', isGoing: 'true', returnAddress: 'returnEmail' }"; $.ajax({ type: "POST", url: "Default.aspx/OnSubmit", data: dataValue, contentType: 'application/json; charset=utf-8', dataType: 'json', error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown); }, success: function (result) { alert("We returned: " + result.d); } });