2016-11-28 46 views
1

对所有人都非常好,事实证明我有jquery ajax的问题​​。我需要你给我一个返回值,但我得到的结果是未定义的。在Ajax响应中未定义的函数结果

我读过,这是因为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调用异步放置:虚假;所有结果都是正确的,但我已经读过这种形式是不正确的,因为这对用户体验是有害的。我怎么能解决这个问题?看看有没有人能向我解释发生了什么事。

谢谢!

回答

1

你需要使用一个回调: -

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

+0

非常感谢,我怎么能得到这个函数的结果呢?我需要将它存储在var中。 – PlayerWet

+1

查看顶部提供的链接以获得更详细的答案。 – BenG

+0

我很抱歉,但仍然阅读该答案仍然继续给我未定义的结果。我无法摆脱函数的价值并将其保存在一个变量中,至少我不知道如何实现它。 – PlayerWet

相关问题