我在.net项目中使用Ajax(不是MVC.net)。我想从JScript函数调用我的.aspx.cs函数。
这是我的JScript代码:
$("a#showQuickSearch").click(function () {
if ($("#quick_search_controls").is(":hidden")) {
$.ajax({
type: "POST",
url: "Default.aspx/SetInfo",
data: "{showQuickSearch}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert(response.d);
}
});
$("#quick_search_controls").slideDown("slow");
$("#search_controls").hide();
$("#search").hide();
} else {
$("#quick_search_controls").hide();
}
});
这是我的.aspx.cs功能:
[WebMethod]
public string SetInfo(string strChangeSession)
{
Label1.Text = strChangeSession;
return "This is a test";
}
问题是我的.aspx.cs函数没有被调用,也没有更新label.text。
答案 0 :(得分:1)
尝试将您的功能设为静态。
[WebMethod]
public static string SetInfo(string strChangeSession)
{
//Label1.Text = strChangeSession; this wont work
return "This is a test";
}
答案 1 :(得分:1)
data: "{showQuickSearch}"
无效JSON。
以下是有效JSON的外观:
data: JSON.stringify({ strChangeSession: 'showQuickSearch' })
您的PageMethod也需要是静态的:
[WebMethod]
public static string SetInfo(string strChangeSession)
{
return "This is a test";
}
这显然意味着您无法访问任何页面元素,如标签和内容。现在,您可以使用PageMethod的结果来更新某些标签或其他任何内容,这是您成功回调的内容。
答案 2 :(得分:0)
$.ajax({
type: "POST",
url: "Default.aspx/SetInfo",
data: "{'strChangeSession':'showQuickSearch'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert(response.d);
},
error: function (xhr, status, error) {
var msg = JSON.parse(xhr.responseText);
alert(msg.Message);
}
});
你的后端代码:
[WebMethod]
public static string SetInfo(string strChangeSession)
{
return "Response ";
}