C# 当从AJAX调用服务器端方法时,显示500内部服务器

C# 当从AJAX调用服务器端方法时,显示500内部服务器,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我的问题是,当我在ASP.NET C#中调用从AJAX到服务器端方法的数据时,此时在浏览器控制台中显示错误,即500内部服务器错误 这是我的客户端代码 <label for="fname">Name</label> <input type="text" id="txt_name" placeholder="Your Name.."/> <label for="lname">EmailID</label> &l

我的问题是,当我在ASP.NET C#中调用从AJAX到服务器端方法的数据时,此时在浏览器控制台中显示错误,即500内部服务器错误

这是我的客户端代码

 <label for="fname">Name</label>
    <input type="text" id="txt_name" placeholder="Your Name.."/>

    <label for="lname">EmailID</label>
    <input type="text" id="txt_emailID" placeholder="Your EmailID.."/>

    <label for="lname">Subject</label>
    <input type="text" id="txt_subject" placeholder="Your Subject.."/>

    <label for="subject">Content</label>
    <textarea id="txt_content" placeholder="Write content.." style="height:200px"></textarea>

    <input type="submit" id="submit_mail" value="Send"/>


<script>
    $(function () {
        $("#submit_mail").click(function () {
            $.ajax({
                type: "POST",
                url: "contact.aspx/SendMail",
                data: "{name: $('#txt_name').val(), email: $('#txt_emailID').val(), subject: $('#txt_subject').val(), message: $('#txt_content').val()}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }
            });
        });
    });

    function OnSuccess(response) {
        alert(response.d);
    }

</script>       

谢谢

如果你转换一下,会更好 SendMail(字符串名称、字符串电子邮件、字符串主题、字符串消息) 进入SendMail(电子邮件)


如果你改信的话会更好 SendMail(字符串名称、字符串电子邮件、字符串主题、字符串消息) 进入SendMail(电子邮件)


步骤1:请按以下步骤尝试不带参数

     [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    protected void SendMail()
    {
    }
并从ajax中删除行:
数据:“{name:$('txt_name').val(),电子邮件:$('txt_emailID').val(),主题:$('txt_subject').val(),消息:$('txt_content').val()”,

请尝试步骤1并检查是否仍有错误

步骤2:更新(保护为公共静态)

步骤3:

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static void SendMail(string name)
    {
    } 

并在ajax调用检查中立即更新添加
数据:“{name:$('#txt_name').val()}”
,步骤1:请按照下面的说明在没有参数的情况下进行尝试

     [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    protected void SendMail()
    {
    }
并从ajax中删除行:
数据:“{name:$('txt_name').val(),电子邮件:$('txt_emailID').val(),主题:$('txt_subject').val(),消息:$('txt_content').val()”,

请尝试步骤1并检查是否仍有错误

步骤2:更新(保护为公共静态)

步骤3:

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static void SendMail(string name)
    {
    } 

并更新add
数据:“{name:$(''txt_name').val()}”
现在在ajax调用检查中

WebMethod
应该是
公共静态的
不受
保护的
,因为我们不是从同一类/子类调用它

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static void SendMail(string name, string email, string subject, string message)
{
}
也尝试

data: JSON.stringify({name: $('#txt_name').val(), email: $('#txt_emailID').val(), subject: $('#txt_subject').val(), message: $('#txt_content').val()}),

而不是普通字符串。

WebMethod
应该是
public static
而不是
protected
,因为我们不是从同一类/子类调用它

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static void SendMail(string name, string email, string subject, string message)
{
}
也尝试

data: JSON.stringify({name: $('#txt_name').val(), email: $('#txt_emailID').val(), subject: $('#txt_subject').val(), message: $('#txt_content').val()}),

而不是纯字符串。

您需要将脚本管理器控件添加到页面中,只有在添加它之后,web方法调用才能执行。

您需要将脚本管理器控件添加到页面中,只有在添加它之后,web方法调用才能执行。

这是您的实际C代码吗?还要注意,您发送的
数据
无效。最好删除字符串周围的引号,给jQuery一个对象,它可以自己序列化。是的,它只是实际的c代码。你能告诉我我的代码的语法吗?只要去掉你给
数据
的值周围的
。然后你需要在C方法中加入一些逻辑,它生成一个有效的响应。我像这样做数据:{name:$('#txt_name')。val(),电子邮件:$('#txt_emailID').val(),主题:$('#txt_subject').val(),消息:$('#txt_content').val(),但同样的问题也会出现在删除引号后,您可以尝试在该对象上调用JSON.stringify。您的实际C#code是什么?还要注意,您发送的
数据是无效的。您最好删除字符串周围的引号,并给jQuery一个可以序列化的对象t自己。是的,它只是实际的c代码。你能告诉我代码的语法吗?只要删除你给
数据
的值周围的
。然后你需要在C方法中加入一些逻辑,生成一个有效的响应,我已经这样做了:{name:$('txt_name').val(),email:$('txt_emailID').val(),subject:$('txt_subject').val(),message:$('txt_content').val(),但在去掉引号之后,同样的问题也出现了,您可以尝试在该对象上调用JSON.stringify,但调用在转到ajax后没有进入sendmail方法,仅显示内部错误,但调用在转到ajax后没有进入sendmail方法,仅显示内部错误我已从受保护更改为公共,但也出现了相同的错误。很高兴帮助我更改了从受保护到公开,但同样的错误也会出现。很乐意帮助