2015-07-11 67 views
1

var data是我的jQuery变量,我想添加jsonData.image_name字符串文本到它。但通过时请继续说undefined无法解析并返回jQuery字符串到jQuery变量

function SaveAndGetImageName() { 
    var data = ""; 
    var formData = new FormData(); 
    formData.append('btn_Browse', $('#btn_Browse')[0].files[0]); 
    $.ajax({ 
     url: '../Gem/SaveProfilePic', 
     type: 'POST', 
     dataType: 'json', 
     cache: false, 
     async: true, 
     contentType: false, 
     processData: false, 
     data: formData, 
     success: function (jsonData) { 
      data = jsonData.image_name; 
     } 
    }); 

    return data; 
} 
+1

为什么你将'contentType'设置为false? –

回答

3

你不能从异步调用中返回数据,你应该在成功回调函数中进行操作。由于数据到达时会调用回调函数,但在此之前您将返回数据,因此您得到undefined

function SaveAndGetImageName(processImageNameCallback) { 
    var data = ""; 
    var formData = new FormData(); 
    formData.append('btn_Browse', $('#btn_Browse')[0].files[0]); 
    $.ajax({ 
     url: '../Gem/SaveProfilePic', 
     type: 'POST', 
     dataType: 'json', 
     cache: false, 
     async: true, 
     contentType: false, 
     processData: false, 
     data: formData, 
     success: function (jsonData) { 
      data = jsonData.image_name; 
      processImageNameCallback(data); 
     } 
    }); 

    return data; 
} 

function processImageName(imageName){ 
    // do stuff with image name 
    alert(imageName); 
} 

SaveAndGetImageName(processImageName) 
+1

Thax你这么多的伴侣,它的工作。 –