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

时间:2017-06-16 09:14:27

标签: 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>
    <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>       

这是服务器端的代码

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
protected void SendMail(string name, string email, string subject, string message)
{
}

由于

4 个答案:

答案 0 :(得分:2)

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()}),

而不是普通字符串。

答案 1 :(得分:1)

第1步:请按以下方式尝试不带参数

     [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    protected void SendMail()
    {
    }

从ajax删除行:data: "{name: $('#txt_name').val(), email: $('#txt_emailID').val(), subject: $('#txt_subject').val(), message: $('#txt_content').val()}",

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

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

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

第3步:

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

并在ajax调用中立即更新data: "{name: $('#txt_name').val()}"

答案 2 :(得分:0)

如果转换会更好 SendMail(字符串名称,字符串电子邮件,字符串主题,字符串消息)  到SendMail(电子邮件)

Bundle extras = new Bundle();
extras.putBoolean("is_designed_for_families", true);

AdRequest request = new AdRequest.Builder()
        .addNetworkExtrasBundle(AdMobAdapter.class, extras)
        .tagForChildDirectedTreatment(true)
        .build();

答案 3 :(得分:0)

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