2011-04-20 56 views
0

我正在處理一些jQuery的東西,並遇到這個錯誤,我不知道如何解決它。我正在使用flickr api查看當天的前16張照片,並且我正在使用javascript畫布,但它一直給我提供那個錯誤。這是我的代碼。JQuery TypeError:類型錯誤

var URLs = new Array(); 
function draw() { 
    // Loop through all images 
    var ctx = $('#canvas')[0].getContext("2d"); 
    for (i=0;i<16;i++){ 
     //document.write(URLs[i]); 
     //alert("hi"); 
     ctx.drawImage(URLs[i],i * 120,i*120,100,100); 
    } 
} 
$.ajax({ 
    url: 'http://api.flickr.com/services/rest/?&method=flickr.interestingness.getList&api_key=40ebfc18056e62c7e1cbec778b1db727&format=json&jsoncallback=?', 
    dataType: "jsonp", 
    success:function(data){ 
     for(var i = 0; i < 16; i++) 
     { 
      var photoURL = 'http://farm' + data.photos.photo[i].farm + '.static.flickr.com/' + data.photos.photo[i].server + '/' + data.photos.photo[i].id + '_' + data.photos.photo[i].secret + '_m.jpg'; 
      URLs[i] = photoURL; 
     } 
     draw(); 
    } 
})  

<html> 
    <head> 
    <title>Flickr Art gallery</title> 
    <script src="/js/jquery.js"></script> 
    <script src="/js/flickr.js"></script> 
    <style type="text/css"> 
     img { display:none; } 
     table { margin: 0 auto; } 
     td { padding:15px; } 
    </style> 
    </head> 
    <body> 
    <canvas id="canvas" width="1000" height="600"></canvas> 
    </body> 
</html> 

的錯誤發生,因爲在畫布上的,當我打電話的drawImage,它拋出這個,所以我想知道什麼會導致這一點。提前致謝。

錯誤是:

Uncaught TypeError: Type error 
d.d.extend._Deferred.f.resolveWith jquery.js:16 
v jquery.js:16 
d.ajaxTransport.send.d.onload.d.onreadystatechange jquery.js:16 
+0

注意不好'NULL''EMPTY''BLANK''ZERO' :) – diEcho 2011-04-20 05:58:26

+0

什麼是錯誤信息和行號? – 2011-04-20 06:11:20

+0

它在JQuery文件中,所以它表示的行是文件中的唯一行,並且錯誤消息是: 未捕獲的類型錯誤:類型錯誤 ddextend._Deferred.f.resolveWithjquery.js:16 vjquery。 js:16 d.ajaxTransport.send.d.onload.d.onreadystatechangejquery.js:16 – WWaldo 2011-04-20 06:13:22

回答

3

drawImage方法wants an Image object,而不是字符串。所以,你只需要實例化網址爲圖像對象:

for(i = 0; i < 16; i++) { 
    var image = Image.new(); 
    image.src = URLS[i]; 
    ctx.drawImage(image, i * 120, i * 120, 100, 100); 
} 

你的錯誤消息的「類型錯誤」的部分是非常明顯的,一旦你知道drawImage想要什麼。其餘的錯誤信息有點混亂,因爲異常來自jQuery的AJAX成功回調調用的函數內部,這意味着您和您的bug之間會出現幾層隱晦的錯誤。

+0

工作!非常感謝 – WWaldo 2011-04-20 12:53:59