你不一定想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
上述对象的属性。