如何在 ajax 回调中从“成功”调用代码隐藏方法
How to call code-behind method from 'success' in ajax callback?
如何修改下面的代码以使用"成功"在代码隐藏中调用testMethod()?我需要等待来自testMesthod()的返回值并处理它。
$.ajax( {
url : 'myPage.aspx/testMethod',
type : "POST",
contentType : "application/json; charset=utf-8",
data : "{'name':'" + aNb + "'}",
dataType : "json"
}).done(function() {
alert("ok");
}).fail(function() {
alert("not ok");
});
上面的代码不起作用,因为不知何故最新的 JQuery 版本 (1.10.1) 被 1.3.2 覆盖。
谢谢
您需要将回调函数传递给包装 $(ajax) 的函数。
function getData(ajaxQuery, callBack){
var ajaxHREF = 'your url';
$.ajax({
url: ajaxHREF,
type: "post",
data: ajaxQuery,
beforeSend: function ( xhr ) {
xhr.overrideMimeType("application/json");
},
success: function(response, textStatus, jqXHR){
var jsonData = $.parseJSON(response);
callBack (jsonData);
},
然而,一个更好的方法是全球成功事件。 这样做更好,因为您拥有可用于启用结果动态处理的调用的所有属性。 内联创建全局成功事件 = $(document).ajaxSuccess 为所有 jQuery Ajax 成功事件调用此事件,因此您需要区分哪些调用适用于您的特定处理程序(每个全局处理程序)。
$(document).ajaxSuccess(function(event, xhr, settings) {
var query = settings.data;
var mimeType = settings.mimeType;
if (query.match(/ameaningfulvalueforthishandler/)){
if(mimeType.match(/application'/json/)){
var jsonData = $.parseJSON(xhr.responseText);
}
}
}
感谢您的回复,但我仍然不明白 callbacl 如何帮助我。我需要在代码隐藏中调用 webmethod:testMethod()Ajax 调用做到了,url = "myPage.aspx/testMethod" 将 'call' webmethod testMethod(),但它是异步的,并且会很快返回到 Ajax 调用的"成功"部分。但是,我需要等待testMethod()完成处理,检索testMethod()返回的结果并对其进行处理。异步 ajax 将使我们返回"成功",而无需等待 testMethod() 完成,我们不会得到任何数据作为回应。那么,回调如何帮助我实现它呢?
function getData(ajaxQuery, callBack){
var ajaxHREF = "myPage.aspx/testMethod";
$.ajax({ 网址: ajaxHREF, 类型:"帖子", data: ajaxQuery,
之前发送: 函数 ( xhr ) { xhr.overrideMimeType("application/json"); }, success: function(response, textStatus, jqXHR){
var jsonData = $.parseJSON(response); 回调 (jsonData); });
谢谢
@Karen Slon - 如果我正确理解了这个问题,我认为您需要在概念上将客户端与服务器端分开。 .success/.done 或全局 ajaxSuccess 事件中的回调使您的网页能够发起请求并在服务器端处理您的请求"myPage.aspx/testMethod"时继续处理。 成功完成后,它将返回到成功事件。现在,如果testMethod没有返回任何内容,那么您将发现自己处于成功事件中而没有结果。 但是,除非 Web 方法测试方法成功完成并返回控件,否则您无法到达那里。示例中的 .done 事件只有 alert("ok");。 是什么让您相信 web 方法测试方法在发生 .done 事件时不完整?
查看这些帖子以获取更好的示例:
jQuery.ajax 处理继续响应:"成功:" vs ".done"?
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
http://api.jquery.com/category/deferred-object/
- JQuery FullCalendar在从ajax成功调用rerenderEvents时遇到问题
- 在websql成功调用中Jquery移动主题打开按钮
- 在http成功调用上启用锚标记无效
- 将多个 AJAX 成功调用组合为一个
- 成功调用AJAX后,Toast Growl不会出现
- 如何在ajax成功调用中读取解析后的json数据
- 使用参数成功调用简单函数后出现意外警报,消息为“未定义”
- 无法让茉莉花测试成功调用注入的服务
- 从 if 成功调用函数
- AJAX 成功调用上的自定义验证
- Ajax 成功调用未执行
- 当服务不可用时,获取数组长度为 0 的成功调用
- 如何在成功调用 ajax 后执行 JS 函数
- 如何让一个成功调用进行多个 AJAX 调用
- 在 AJAX 成功调用 C# 方法
- 如何在 ajax 回调中从“成功”调用代码隐藏方法
- 在成功调用ajax之后更新引导popover的内容
- 如何在ajax成功调用的html表中显示字符串数据
- AJAX成功调用2个函数
- 成功调用Ajax后将函数重新绑定到锚定标记