ajax 响应中的函数结果未定义

Function result undefined in ajax response

对大家很好,原来是我jqueryajax有问题。我需要你给我一个 return 值,但我得到的结果是不确定的。

我读到这是因为 ajax 不是异步的,但引起我注意的是在控制台中它正确地向我显示了结果。

function saveImageAjax(imagen){

        var tmp;

        $.ajax({
        url: "saveimg.php",
        type: "post",       
        data: {'image': imagen},
        success: function (data) {
                if(data!=undefined){
                tmp = data;
                console.log(tmp);

                }

            }

                    });

            return tmp; 

 }

    var response=saveImageAjax('example.com/image.png');

我一直在研究,我在网上发现的东西已经很多年了……当放入 ajax 时调用 async: false;一切的结果都是正确的,但我读到这种形式是不正确的,因为它会损害用户体验。我该如何解决这个问题?看看有没有人能给我解释一下是怎么回事。

谢谢!!

您需要使用回调:-

function saveImageAjax(imagen, callback) {

  $.ajax({
    url: "saveimg.php",
    type: "post",
    data: {
      'image': imagen
    },
    success: function(data) {
      if (data != undefined) {
        console.log(data);
        callback(data);
      }
    }
  });

}

saveImageAjax('example.com/image.png', function(data) {
  console.log(data);
});

那么你的响应变量将是回调函数中的data