2015-06-20 115 views
0

我是JavaScript和服務器端編程的新手。我試圖發送一個GET請求,從我的博客加載圖像:http://jsafaiyeh.github.io/img/suw_background.png狀態碼304

function imgLoad(url) { 
return new Promise(function(resolve, reject) { 

    var request = new XMLHttpRequest({mozSystem: true}); 
    request.open('GET', url); 
    request.responseType='blob'; 

    request.onload = function() { 
    if (request.status >= 200 && request.status < 400) { 
     resolve(request.response); 
    } else { 
     reject(Error('Image did\'t load successfully; error code '+ request.statusText)); 
    } 
    }; 

    request.onerror= function() { 
    reject(Error('There was a network Error')); 
    }; 
    request.send(); 
}); 
} 

var body = document.querySelector('body'); 
var myImage = new Image(); 

imgLoad('http://jsafaiyeh.github.io/img/suw_background.png').then(function response() { 
    var imageURL = window.URL.createObjectURL(response); 
    myImage.src = imageURL; 
    body.appendChild(myImage); 
}, function(Error) { 
    console.log(Error); 
}); 

我得到狀態代碼304。但是,仍沒有圖像加載到頁面上。任何幫助,將不勝感激。

+0

如果客戶端執行了條件GET請求並且允許訪問,但文檔沒有被修改,服務器應該用這個狀態碼進行響應。 304響應不能包含消息體,因此總是由頭字段後的第一個空行終止。 – nikhil

+1

控制檯中的任何錯誤? –

+0

TypeError:參數1對於URL.createObjectURL的任何2參數重載無效。使用FireFox – safaiyeh

回答

1

您有錯誤的功能簽名。它應該是這樣的:

imgLoad('http://jsafaiyeh.github.io/img/suw_background.png').then(function (response) { 
    var imageURL = window.URL.createObjectURL(response); 
    myImage.src = imageURL; 
    body.appendChild(myImage); 
}, function(Error) { 
    console.log(Error); 
}); 

Working demo on JSFiddle(至少在Chrome中)。

而不是傳遞命名函數,調用response您可能想要response在參數列表中。所以,而不是function response(),你需要function (response)。您沒有得到response未定義的錯誤,因爲它實際上已被聲明,但它不是預期的結果,而是函數。

+1

我沒有明白!謝謝。 – safaiyeh