3

我在我的代码中使用 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>

我怎么做 ?

4

2 回答 2

3

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

[WebMethod]
public static string RandomSentnce ()
{
     ... get your random sentence here ..
}

并做类似的事情

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

WebMethods不会经历整个 asp.net Web 表单的生命周期,因此它们通常也更快。

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

  ...
  success: function(msg) {
      $("#myDivID").text(msg.d);
  }
  ...

如果它是您仅通过单击才知道的东西,那么您只需要在调用 ajax 调用时捕获对该元素的引用并在成功方法中使用该引用(或者,使用 jQuery 承诺,您不严格必须通过一个成功的方法,但我现在不会进入)。

顺便说一句,我没有记住所有这些,我使用http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/作为来源。如果我所说的有任何问题,请咨询该消息来源。

编辑:

你问:第一:在$.ajax上,在url上..当你输入“PageName.aspx/RandomSentnce”时,是不是直接进入函数了?!第二:关于成功函数,$("#myDivID").text(msg.d) 中的“d”是什么意思;?

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

对#2 的回答:默认情况下(从 asp.net 3.5+ 开始),WebMethod 响应被包装在一个“出于安全考虑”的对象中(请参阅JSON 中的 .d 是什么意思?http://encosia.com/a-中断更改-aspnet-ajax/ 版本之间的变化)。基本上,您的响应主体看起来{"d":"..."}会被解析为一个 javascript 对象(success函数的第一个参数),并且要获得方法的结果,您只需获取d上述对象的属性。

于 2012-10-27T16:53:09.243 回答
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);
    }
);
于 2014-03-26T00:23:59.163 回答