gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:29:53 25 4
gpt4 key购买 nike

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

我读过 this和其他指向 webconfig 的文章,但这些解决方案似乎无法解决我的问题。

这是asp页面:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="TesScript.js"></script>
<link rel="Stylesheet" type="text/css" href="TestStyle.css" />
</head>
<body>
<div>
<ul class="tempList">
<li>Name:
<input id="nameText" type="text" />
</li>
<li>Attending:
<input id="yesButton" type="radio" name="attending" />
Yes
<input id="noButton" type="radio" name="attending" />
No </li>
<li>Return Address:
<input id="returnAddressText" type="text" />
</li>
<li>
<input id="submitButton" type="button" onclick="submit()" value="Submit" />
</li>
</ul>
</div>
<ul id="errorContainer" class="errorSection" runat="server" />
<ul id="messageContainer" class="messageSection" runat="server" />
</body>
</html>

背后的代码:

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 属性更改为我想要的任何内容,并且永远不会调用错误方法,状态为成功,responseText 是整个 html 页面。我的 webconfig 具有所有适当的部分(包括 htmlModule 部分)。我在 .Net 3.5 中工作。我感谢任何帮助,而且,我对此真的很陌生,所以对其他人来说显而易见的事情对我来说很可能并不明显。如果有更好的方法(即从 JavaScript 调用 asp.net 代码隐藏方法),请随时发布。谢谢!!!

最佳答案

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

您正在连接到 complete 事件,而不是 success 事件 - 这两者之间存在显着差异,这就是您的调试结果与预期不符的原因。另外,我从来没有让签名方法与你的相匹配,而且我总是提供一个 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);
}
});

关于c# - ASP.NET jQuery Ajax 调用代码隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com