从服务器ASP.NET返回jquery POST

时间:2012-10-27 14:26:44

标签: asp.net jquery

我在我的代码中使用Jquery Post, 我想知道如何从服务器回拨我的HTML页面..

这是我的Jquery代码:

function InsertMemo() {

$('#buttonComplain').bind('click', function () {

    var noteMemo = $('#noteId').val();
    var url = "Handlers/Handler.aspx";

    $.post(url,
         { noteMemo: noteMemo },
          function () {

              hideMemoShowCons();


          }
     );
});

}

我想在函数中,用C#中的代码回调:

protected void Page_Load(object sender, EventArgs e)
        {
              rndSntnc = RandomSentnce();
        }

然后将其改为我的HTML:

 <div class="cons">
               <%=thecodeExample %>
            </div>

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您不一定要再次运行Page_Load。我的意思是,你可以(并且Web表单开发中的大多数ajax确实贯穿整个页面生命周期),但是如果页面的任何其他部分没有依赖关系,那么制作{{1}可能更有意义。静态RandomSentnce

WebMethod

做一些像

这样的事情
[WebMethod]
public static string RandomSentnce ()
{
     ... get your random sentence here ..
}

WebMethods 遍历整个asp.net Web表单生命周期,所以它们通常也更快。

您是否知道哪个div需要在调用时替换其内容?如果是这样的话,给div一个ID是有道理的,这样你就可以在上面的成功方法中找到它,所以你可以这样做:

$.ajax({
  type: "POST",
  url: "PageName.aspx/RandomSentnce",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something interesting here.
  }
});

如果你只知道点击它,你只需要在调用ajax调用时捕获对元素的引用,并在success方法中使用该引用(或者,使用jQuery promises,你不要我必须通过一种成功的方法,但我现在不会这样做。)

BTW我没有记住这一切,我使用http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/作为来源。如果我说的话有什么问题,请咨询该来源。

编辑:

你问:首先:在$ .ajax上,在你的网址上..当你输入“PageName.aspx / RandomSentnce”时,这意味着你直接去了这个函数?!第二:关于成功函数,“d”在$(“#myDivID”)中的含义.text(msg.d); ?

对#1的回答:不确定你在这里的“go”是什么意思,但这就是为aspx页面上的web方法构建url的方式,并且,从你的页面中,只会调用该函数。

对#2的回答:默认情况下(从asp.net 3.5+开始),WebMethod响应被包装在一个对象中“出于安全考虑”(参见What does .d in JSON mean?http://encosia.com/a-breaking-change-between-versions-of-aspnet-ajax/)。基本上,您的响应正文看起来像 ... success: function(msg) { $("#myDivID").text(msg.d); } ... ,它将被解析为javascript对象({"d":"..."}函数的第一个参数),并且为了获得方法的结果,您只需抓住{ {1}}上述对象的属性。

答案 1 :(得分:1)

你可以这样做。

Page_Load方法中:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Form["noteMemo"] != null)
    {
        // do sometheing with your param (Request.Form["noteMemo"])
        // and get your random sentence
        string rndSntnc = RandomSentnce();
        Response.Write(rndSntnc);
        Response.End();
    }
}

在你的ajax函数中:

$.post(url,
    { noteMemo: noteMemo },
    function (msg) {
        $('#myDiv').text(msg);
    }
);