Asp.net 如何从jQueryAjax调用Default.aspx.cs页面方法?
我有一个注册表单(Default.aspx),当用户点击按钮Jquery对Default.aspx.cs函数进行Ajax调用时,该表单最初只显示2个字段和一个按钮(名称、电子邮件),该函数查询数据库以检查用户,如果返回否,则表单会自动展开并添加注册字段 我无法打电话到Defualt.aspx.cs 我的Default.aspx代码是:Asp.net 如何从jQueryAjax调用Default.aspx.cs页面方法?,asp.net,jquery,c#-3.0,Asp.net,Jquery,C# 3.0,我有一个注册表单(Default.aspx),当用户点击按钮Jquery对Default.aspx.cs函数进行Ajax调用时,该表单最初只显示2个字段和一个按钮(名称、电子邮件),该函数查询数据库以检查用户,如果返回否,则表单会自动展开并添加注册字段 我无法打电话到Defualt.aspx.cs 我的Default.aspx代码是: <script type="text/javascript"> $(document).ready(function() {
<script type="text/javascript">
$(document).ready(function() {
$('#btnDownload').click(function() {
//$('#secondary').toggle(1000)
$.ajax({
type: "POST",
url: "Default.aspx/PassData",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
});
function AjaxSucceeded(result) {
alert(result.d);
}
function AjaxFailed(result) {
alert('Failed');
}
});
</script>
但每次我运行代码时,JS都会返回错误:
Uncaught ReferenceError: com is not defined
POST http://localhost:2305/temp/Default.aspx/PassData 500 (Internal Server Error)
我检查了几个帖子,但没有一个得到回复/解决
任何形式的帮助都将不胜感激
提前感谢您需要使用[WebMethod]属性装饰该方法 编辑 您需要添加一个ScriptManager并使用一些ASP.NET ajax框架方法。我认为,使用开箱即用的功能,您想要做的是不可能的 一个选项是创建一个处理这些方法的HttpHandler。如果请求是一个POST,您可以从url中找到页面类型(框架中有一个方法,但我不记得是哪一个,您需要研究),创建一个新实例并检查该方法是否具有WebMethod(或您喜欢的其他属性)。如果有,可以使用反射调用它并渲染结果 编辑 正如@Antony Highsky所指出的,这是可能的。我认为解决方案是添加[WebMethod]属性并将de方法公开(在示例中是私有的)。使用**[WebMethod]
[WebMethod]
private static string PassData(string id)
{
return "Pass";
}
服务器上的错误是什么?如果它返回一个
500
,那么可能会有更多关于错误的信息。应用程序日志、事件查看器、响应主体等。Hi@David:详细信息是:POST 500(内部服务器错误)f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4 f.extend.ajaxjquery-1.7.1.min.js:4(匿名函数)Default.aspx:14 f.event.dispatchjquery-1.7.1.min.js:3 f.event.add.h.handle.ijquery-1.7.1.min.js:3这是客户端错误。500
响应表示服务器遇到错误。那个错误可能包含有用的信息(错误是经常发生的)。@David:我在哪里可以找到那个错误?有很多地方。如果应用程序将错误写入日志(这通常是个好主意),请检查该日志。如果应用程序未处理该错误,则事件查看器中可能存在某些内容。500
响应的主体中甚至可能有某些内容。此外,您可能希望也可能不希望将EnableSession参数设置为true。我尝试将其设置为[WebMethod(EnableSession=true)],但运气不佳,仍然会响应相同的错误。您可以在这里找到一个小教程。这是另一个有用的教程,这是可能的。看见
[WebMethod]
private static string PassData(string id)
{
return "Pass";
}