Search code examples
javascriptjqueryajaxjquery-ajaxq

jsCall return value to outside of jquery ajax post request


I want to get jquery ajax post request value to outside from the ajax function. my code is this and it return undefined as console output. How should fix it

function submit() {
    var outputFromAjax = submitViaPost('administrator/validationForInputValuesOfAddRole');

    console.log(outputFromAjax);
}

function submitViaPost(url) {

    var formData = $('form').serializeArray();

    var output;

    $.post(urlForPhp + '/' + url, formData, function (outputData) {
        output = outputData;
    });
    return output;
}

Edited

I changed my code to sync type ajax post request and check output. But it is not changed. here my code

function submit() {
    var outputFromAjax = submitViaPost('administrator/validationForInputValuesOfAddRole');

    console.log(outputFromAjax);
}

function submitViaPost(url) {

    var formData = $('form').serializeArray();

    var output;

    $.ajax({
        url: urlForPhp + '/' + url,
        data: formData,
        dataType: 'JSON',
        async: false,
        method: 'POST',
        success: function (e) {
            output =  e;
        }
    });
    return output;
}

Solution

  • You can use Deferred jQuery

    function submit() {
        submitViaPost('administrator/validationForInputValuesOfAddRole').then(function (outputFromAjax) {
            console.log(outputFromAjax);
        });
    }
    
    function submitViaPost(url) {
        var dfd = jQuery.Deferred();
        var formData = $('form').serializeArray();
        $.post(urlForPhp + '/' + url, formData, function (outputData) {
            dfd.resolve(outputData);;
        });
        return dfd;
    }