我无法使WebMethod工作。所有设置都正确,我已将其简化为最小的例子。
AJAX :
function DoAJAX() {
$.ajax({
type: 'POST',
url: 'faq.aspx/DoAJAX',
data: "AJAX Test",
dataType: 'text',
success: function (data, status) {
debugger;
alert(status + " " + data)
},
error: function () {
alert("error!")
}
});
}
WebMethod (在 faq.aspx.cs 中,使用 System.Web.Services ;以及 public static ):
[WebMethod]
public static string DoAJAX(string foo) {
return foo;
}
}
HTML ( faq.aspx , ScriptManager 和 EnablePageMethods )
<%@ Page Title="" Language="C#" MasterPageFile="~/MP.Master" AutoEventWireup="true" CodeBehind="faq.aspx.cs" Inherits="Lottery.faq" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<input type="button" value="AJAX" onclick="DoAJAX()" />
</asp:Content>
点击后,AJAX调用会在数据中返回成功以及以下内容:http://pastebin.com/X0Vke0qj
永远不会到达 DoAJAX() WebMethod 中的断点。
为什么不返回&#34; AJAX测试&#34;发送的字符串,为什么 WebMethod 没有被点击?
答案 0 :(得分:1)
将类型更改为json,添加内容类型和数据,将foo参数传递为json。
$.ajax({
type: 'POST',
url: 'faq.aspx/DoAJAX',
data: "{ 'foo': 'AJAX Test' }",
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data, status) {
alert(status + " " + data.d)
},
error: function (xhr, status, error) {
alert("error!")
}
});
答案 1 :(得分:0)
更改您的代码:
<强> .ASPX:强>
<head runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnCallAjax").click(function () {
DoAJAX();
});
function DoAJAX() {
$.ajax({
type: "POST",
url: "faq.aspx/DoAJAX",
contentType: "application/json;charset=utf-8",
data: '{foo:"AJAX Test"}',
success: function (data, status) {
debugger;
alert(status + " " + data.d)
},
error: function () {
alert("error!")
}
});
}
});
</script>
</head>
<body>
<form id="form1" runat="server">
<input type="button" id="btnCallAjax" value="Call AJAX" />
</form>
</body>
代码背后:
public partial class faq : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string DoAJAX(string foo)
{
return foo;
}
}