我的Ajax帖子没有运行我的代码隐藏方法,因此没有返回任何数据。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="AspTest.Test" %>
Test.aspx(Ajax脚本)
<script>
$(".avatarThumb").click(function () {
$.ajax({
type: "POST",
url: "Test.aspx/MyMethod",
//data: {"s": "Some data passed through" },
//contentType: 'application/json; charset=utf-8',
//dataType: 'json',
success: function (response) {
alert(response.d); //Returns "undefined"
},
failure: function(response) {
alert(response);
}
});
});
</script>
删除contentType和dataType确实取得了成功,但没有运行codeBehind方法。在contentType和/或dataType处于活动状态时,它不会成功也不会失败。 FF firebug不会显示任何错误。
* Test.aspx.cs CodeBehind方法
[System.Web.Services.WebMethod]
public static string MyMethod()
{
(*) Debug.WriteLine("MyMethod called!"); // (*) Breakpoint never reached
return "Method called!";
}
答案 0 :(得分:1)
像这样更改您的代码。它应该工作正常
var SendData = {};
$.ajax({
type: "POST",
url: "Test.aspx/MyMethod",
data: JSON.stringify(SendData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
},
error: function (result) {
console.warn(result.statusText);
}
});
你的C#方法:
[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string MyMethod()
{
return "Method called!";
}
如果您的页面Test.aspx位于项目的根级别,则上述代码有效。如果不改变url参数值,如&#34; ../ Test.aspx / MyMethod&#34;根据您文件的位置深度。
答案 1 :(得分:0)
按如下方式更改数据并发送ajax。
$.ajax({
type: "POST",
url: "Test.aspx/MyMethod",
data: JSON.stringify({"s": "Some data passed through" }),
contentType: 'application/json; charset=utf-8',
//dataType: 'json',
success: function (response) {
alert(response.d); //Returns "undefined"
},
failure: function(response) {
alert(response);
}
});
现在webmethod应匹配通过ajax发送的参数。
[System.Web.Services.WebMethod]
public static string MyMethod(string s)
{
return "Method called!";
}
答案 2 :(得分:0)
试试这个:
$(".avatarThumb").click(function () {
$.ajax({
type: "POST",
url: '<%=ResolveUrl("~/Test.aspx/MyMethod")%>',
contentType: 'application/json; charset=utf-8',
success: function (response) {
alert(response.d);
},
failure: function(response) {
alert(response);
}
});
});
确认GET或POST类型。