我正在编写一个 AJAX 项目,我想知道正确的方法,(不使用 Visual Studio 的内置 AJAX)
我正在使用带有 JQuery 的 AJAX 调用,这是我的问题:在服务器端,我创建了 AjaxProj.aspx,它不包含任何 html 代码,在这个 Page_load 函数中具有捕获 ajax 请求的所有代码,并且在代码的末尾拥有
response.end();
我真的很想知道我是否以正确的方式使用它(我再次不想使用工具箱中的 .net AJAX)
都...
请向我们粘贴您的一些代码以正确使用 Ajax 您应该使用 webmethode 函数,并且您的函数应该是静态的,例如:
$(document).ready(function () {
var text = $("#<%=ApplicationSearchResult.ClientID %>").val();
// Add the page method call as an onclick handler for the div.
$("#<%=ApplicationSearchResult.ClientID %>").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
url: "Dashboard.aspx/GetTreeNodesByText",
data: "{'text': '" + request.term + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
response(data.d);
}
});
},
minLength: 1
});//end auto complete
});
服务器端功能:
[WebMethod]
public static List<string> GetTreeNodesByText(string text)
{
List<string> Nodes = new List<string>();
if (HttpContext.Current.Session["SerialSearchDT"] != null)
{
DataTable DT = HttpContext.Current.Session["SerialSearchDT"] as DataTable;
DataRow[] filteredDataTable = DT.Select("NODE_NAME LIKE '" + text + "%'");
// DT.DefaultView.ToTable(true, "NODE_NAME");
for (int i = 0; i < filteredDataTable.Length; i++)
{
string res = filteredDataTable[i][2].ToString();
Nodes.Add(res);
}//end For
}//endIF
return Nodes.Distinct().ToList();
}
这是一个例子,我希望它可以帮助你解决你的问题
首先编写您的服务器端代码:
[WebMethod()]
public static string GetData(int userid)
{
/*do stuff*/
return userId.ToString();
}
重要说明:该方法必须是静态的,并且必须具有 WebMethod 属性,然后是 javascript 部分:
function asyncServerCall(userid) {
jQuery.ajax({
url: 'WebForm1.aspx/GetData',
type: "POST",
data: "{'userid':" + userid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
}
然后不要忘记传递js函数:
<input type="button" value="click me" onclick="asyncServerCall(1);" />
并且您必须在 ScriptManager 中启用PageMethods