简体   繁体   English

jsCall返回值到jQuery Ajax发布请求之外

[英]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. 我想从ajax函数获取jquery ajax发布请求值到外部。 my code is this and it return undefined as console output. 我的代码是这个,它返回undefined作为控制台输出。 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. 我更改了代码以同步ajax类型的post请求并检查输出。 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;
}

Don't return , make it a callback as $.post is async 不要返回,请使其成为回调,因为$.post是异步的

function submit() {
    submitViaPost('administrator/validationForInputValuesOfAddRole', function(out){ //Result comes here
      var outputFromAjax = out;
      console.log(outputFromAjax);
    });
}

function submitViaPost(url , callback) { //Added callback
    var formData = $('form').serializeArray();
    $.ajax({
    url: urlForPhp + '/' + url,
    data: formData,
    dataType: 'JSON',
    async: false,
    method: 'POST',
    success: function (e) {
        callback(e);
    }
 });
}

You can use Deferred jQuery 您可以使用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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM