ajax参数始终为null?

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