我在我的代码中使用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>
我该怎么做?
答案 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);
}
);