wait for a jquery ajax callback from calling function

ajax, callback, jquery

Solution

You've got to use a callback function. Try this below:

$(function() {

   // I think doAjax should doAnAjax()
   // here you're passing callback
   // but you're not using it doAnAjax()

    doAnAjax(Url, data, function(myRtn) {
        if (myRtnV == "success") {
            resetForm($('#myForm'));
            resetForm($('form[name=addChlGrp]'));
        } else {
            $('.rtnMsg').html("Opps! Ajax Error");
        }
    });
});

// pass callback as third parameter to doAnAjax()

function doAnAjax(newUrl, data, callBack) {
    $.ajax({
        url: newUrl,
        async: true,
        dataType: 'html',
        beforeSend: function() {
            $('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>");
        },
        type: "GET",
        data: data,
        cache: false,
        success: function(data, textStatus, xhr) {
            $('.rtnMsg').html(data);
            myRtnA = "Success"
            return callBack( myRtnA );  // return callBack() with myRtna
        },
        error: function(xhr, textStatus, errorThrown) {
            $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown);
            myRtnA = "Error"
            return callBack ( myRtnA ); // return callBack() with myRtna
        }
    });

Problem

I have reviewed a lot of answers to this type of question and now I am confused as to the best way. Given the latest jquery, I am wanting to - Call an ajax function - do ajax processing (success or error) // works fine - on success or error return the status to the calling function for further processing in the calling function (doAjax), how do I wait for a callback then complete the processing for success or error (in this case its on success clear a form, on error keep it as is) Thx for any advice, Art [EDIT] There was a typo as you guys spotted, call should have been doAnAjax not doAjax ``` $(function () { doAnAjax(Url, data, function (myRtn) { if (myRtn == "success") { resetForm($('#myForm')); resetForm($('form[name=addChlGrp]')); } else { $('.rtnMsg').html("Opps! Ajax Error"); } }); }); function doAnAjax(newUrl, data) { $.ajax({ url: newUrl, async: true, dataType: 'html', beforeSend: function () { $('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>"); }, type: "GET", data: data, cache: false, success: function (data, textStatus, xhr) { $('.rtnMsg').html(data); myRtnA = "Success" return myRtnA; }, error: function (xhr, textStatus, errorThrown) { $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown); myRtnA = "Error" return myRtnA; } }); } ```

Original source

Related problems