鍍金池/ 問(wèn)答/HTML/ ajax上傳圖片獲取圖片路徑

ajax上傳圖片獲取圖片路徑

var formData = new FormData();
formData.append("image", document.getElementById("FileUpload").files[0]);
$.ajax({

url: url,
type: 'post',
data: formData,
cache: false,
/**
*必須false才會(huì)自動(dòng)加上正確的Content-Type
*/
contentType: false,
/**
* 必須false才會(huì)避開(kāi)jQuery對(duì) formdata 的默認(rèn)處理
* XMLHttpRequest會(huì)對(duì) formdata 進(jìn)行正確的處理
*/
processData: false,
success: function (data) {
    console.log(data)
    if (data.code == '200') {
        this.imageUrl = data.data
    }
}

})
在ajax外獲取不到路徑,會(huì)出現(xiàn)this.imageUrl = ''
這是為什么呢?誰(shuí)也遇到過(guò)類(lèi)似的問(wèn)題?

回答
編輯回答
久礙你

Ajax是異步機(jī)制

    if (data.code == '200') {
        this.imageUrl = data.data
    }
    

這里的this已經(jīng)指向了回調(diào)函數(shù) 對(duì)外部是不生效的
你可以改成:

var imageUrl = '';
//Js默認(rèn)寫(xiě)在文件中的變量是全局變量

$.ajax({//......省略
    if (data.code == '200') {
        imageUrl = data.data
        console.log(imageUrl); // 輸出'http://fool.jpg'
    }
   
//...略
console.log(imageUrl); // 輸出''
// 這里依然獲取不到 是因?yàn)?雖然代碼在下面,但是執(zhí)行的時(shí)間 要早于上面的回調(diào)函數(shù)
// 如果做什么操作記得寫(xiě)在ajax的回調(diào)里
2017年11月6日 11:02
編輯回答
離魂曲

ajax有延時(shí)的,在外面當(dāng)然獲取不到。

2017年5月16日 04:01
編輯回答
話(huà)寡

你可以定義個(gè)全局變量,把獲取到的路徑賦值給全局變量啊

2017年11月17日 05:02