我的问题是,当我在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)
{
}
由于
答案 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方法调用。