Javascript 如何从';成功';在ajax回调中?

Javascript 如何从';成功';在ajax回调中?,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,如何修改下面的代码以使用“success”在代码隐藏中调用testMethod()? 我需要等待testMesthod()的返回值并对其进行处理 $.ajax( { url : 'myPage.aspx/testMethod', type : "POST", contentType : "application/json; charset=utf-8", data : "{'name':'" + aNb + "'}", dataType : "

如何修改下面的代码以使用“success”在代码隐藏中调用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)的函数

然而,一个更好的方法是全球成功活动。这样做更好,因为您可以使用调用的所有属性来启用结果的动态处理。创建全局成功事件inline=$(document).ajaxSuccess这将为所有jquery ajax成功事件调用,因此您需要区分哪些调用适用于特定的处理程序(每个全局处理程序)


谢谢你的回复,但我还是不知道callbacl能帮我什么忙。
我需要在代码隐藏中调用webmethod:testMethod() Ajax调用完成此操作,url=“myPage.aspx/testMethod”将“调用”webmethod testMethod(), 但它是异步的,并且很快返回到ajax调用的“成功”部分。 但是,我需要等待testMethod()完成处理,检索testMethod()返回的结果并对其进行处理。 异步ajax将使我们返回“成功”,而无需等待testMethod()完成, 我们不会得到任何数据的回应。 那么,回调如何帮助我实现它呢

函数getData(ajaxQuery,回调){

var ajaxHREF=“myPage.aspx/testMethod”

$.ajax({ 网址:ajaxHREF, 类型:“post”, 数据:ajaxQuery,
发送前:函数(xhr){ 重写emimetype(“application/json”); }, 成功:函数(响应、文本状态、jqXHR){
var jsonData=$.parseJSON(响应); 回调(jsonData); }))


谢谢你

@Karen Slon-如果我正确理解了这个问题,我认为你需要从概念上将客户端与服务器端分开。在.success/.done或global ajaxSuccess事件中的回调使你的网页能够启动请求并在服务器端处理你的请求“myPage.aspx/testM”时继续处理ethod'。成功完成后返回成功事件。现在,如果testMethod不返回任何内容,则您将在成功事件事件中发现自己没有结果。但是,除非web方法testMethod已成功完成并返回控件,否则无法到达成功事件。示例中的.done事件只有警报(“ok”)当.done事件发生时,是什么使您相信web方法testMethod是不完整的

请看这些帖子,以获得更好的示例:


您的代码隐藏中有
[WebMethod]
名为
testMethod
的方法?谢谢,但是我是否使用“myPage.aspx/testMethod”代替函数中的回调(getData(ajaxQuery,callback)?testMethod是一个代码隐藏方法。我需要在代码隐藏中调用WebMethod:testMethod()。url将“调用”WebMethod testMethod(),它是异步的,返回到“success”部分。但是,我需要等待testMethod()完成并返回结果并对其进行处理。那么,回调如何帮助等待/获取结果呢?函数getData(ajaxQuery,callback){var ajaxHREF“myPage.aspx/testMethod”;$.ajax({url:ajaxHREF,键入:“post”,数据:ajaxQuery,beforeSend:function(xhr){xhr.overrideMimeType(“application/json”);},成功:函数(response,textStatus,jqXHR){var jsonData=$.parseJSON(response);回调(jsonData);});谢谢
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(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);
            }
       }
    }