我正在尝试将一个字符串传递给我的后面代码,但它总是为空。
$.ajax({
type: "POST",
url: "Search.aspx?do=SearchText",
data: {searchText: searchText },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: fnsuccesscallback,
error: fnerrorcallback
});
protected void Page_Load(object sender, EventArgs e)
{
if (Request["do"] != null && Request["do"] == "SearchText")
{
string result = Search.searchText(Request["searchText"]);
}
}
我的请求[" searchText"]始终为空。
编辑:
public void DoSearch(string SearchText)
{
string result = Search.searchText(SearchText);
}
并在ajax帖子中:
url: "Search.aspx/DoSearch",
data: { searchText: searchText },
答案 0 :(得分:1)
这个问题是你试图抓住在a_Lax代码之前触发的Page_Load事件中的查询字符串。所以在Page_Load上没有在该阶段传递的参数,这就是为什么它总是为空。
答案 1 :(得分:1)
好的,我已经设置了适合我的基本测试。
var myString = 'Test';
$.ajax({
type: "POST",
url: "SearchTest.aspx/DoSearch",
data: '{"searchText":"' + myString + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: fnsuccesscallback,
error: fnerrorcallback
});
function fnsuccesscallback() {
}
function fnerrorcallback() {
}
//请记住,webmethod会进入SearchTest.aspx
页面
[WebMethod]
public static void DoSearch(String searchText)
{
//Do your stuff!!
}
请记住导入名称空间... using System.Web.Services;
希望这适合你
答案 2 :(得分:0)
尝试将其称为静态webmethod,将参数直接传递给被调用的方法。
url: "Search.aspx/DoSearch",
data: '{"searchText":"' + searchText + '"}',
//Add this on code behind page...
using System.Web.Services;
[WebMethod]
public static void DoSearch(String searchText)
{
//Do your stuff!!
}