Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何从jQueryAjax调用Default.aspx.cs页面方法?_Asp.net_Jquery_C# 3.0 - Fatal编程技术网

Asp.net 如何从jQueryAjax调用Default.aspx.cs页面方法?

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() {

我有一个注册表单(Default.aspx),当用户点击按钮Jquery对Default.aspx.cs函数进行Ajax调用时,该表单最初只显示2个字段和一个按钮(名称、电子邮件),该函数查询数据库以检查用户,如果返回否,则表单会自动展开并添加注册字段

我无法打电话到Defualt.aspx.cs 我的Default.aspx代码是:

  <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";
}