ajax参数始终为null?

时间:2014-08-04 12:25:16

标签: c# javascript asp.net ajax

我正在尝试将一个字符串传递给我的后面代码,但它总是为空。

$.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 },

3 个答案:

答案 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!!
        }