2014-02-07 6 views
3

Может кто-нибудь сообщить мне, что не так с этим кодом?JQuery ajax request

Эта функция поможет удалить определенные данные в таблице mysql. Данные были успешно удалены, но ответ от функции jquery ajax не является тем, что я ожидал.

function removeMember(id,url){ 
var data = "action=removeMember&id="+id; 
var action = ajaxReturnData('POST',data,url); 
if(action == '1'){ 
    $(".msg").html("done"); 
    $("#span_delete_"+id).parent().parent().empty().hide("slow"); 
}else if(action.response == '0'){ 
    $(".msg").html("failed"); 
} 

}

/*User defined functions */ 
function ajaxReturnData(method,data,url){ 
$.ajax({ 
    url: url, 
    data: data, 
    type: method,   
    success: function(data) { 
     return data; 
    }, 
    error : function(jqXHR, exception){ 
     return '0'; 
    } 
}); 
} 
+0

Еще один дубликат [Как вернуть ответ от звонка AJAX?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Quentin

ответ

1

АЯКС является асинхронным. Вы не можете получить возвращаемые данные обратного вызова success, потому что это jQuery $.ajax, который будет вызывать его, и он не прослушивает возвращаемое значение. AjaxReturnData выйдет, как только запрос отправлен, а не когда он получит ответ.

Вам нужно будет пройти вдоль обратных вызовов (на самом деле, вам нужно будет пересмотреть свою логику. «AjaxReturnData» будет странно метод, чтобы теперь, когда вы знаете, что Ajax звонки не возвращают данные)

function removeMember(id,url){ 
    var data = "action=removeMember&id="+id; 
    var action = ajaxReturnData('POST',data,url,function() { 
    $(".msg").html("done"); 
    $("#span_delete_"+id).parent().parent().empty().hide("slow");  
    }, function() { 
    $(".msg").html("failed"); 
    }); 
} 

function ajaxReturnData(method,data,url,onSuccess,onError){ 
$.ajax({ 
    url: url, 
    data: data, 
    type: method,   
    success: onSuccess, 
    error : onError 
}); 
} 
+0

спасибо за твое предложение – manipvd