I am trying to pass the a string to my behind code, but its always null.
$.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"]);
}
}
My Request["searchText"] is always null.
EDIT:
public void DoSearch(string SearchText)
{
string result = Search.searchText(SearchText);
}
and in the ajax post:
url: "Search.aspx/DoSearch",
data: { searchText: searchText },
The problem with this is you are trying to grab the querystring within the Page_Load event which fires before the ajax code. So on Page_Load there is no parameter passed at that stage which is why it will always be null.
Try calling it as a static webmethod, passing the parameter directly into the called method.
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!!
}
Ok I have set up a basic test which works for me.
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() {
}
//Remember the webmethod goes into the code behind of the SearchTest.aspx
page
[WebMethod]
public static void DoSearch(String searchText)
{
//Do your stuff!!
}
Remember to import the namespace...using System.Web.Services;
Hope this works for you