2010-12-12 131 views
1

如果還沒有加載,我需要加載圖像。 對於這個我使用的誤差函數是這樣的:檢查圖像是否存在,如果沒有加載它

$.ajax({ 
type: "POST", 
url: "inc/functions.php", 
data: { productID: productIDVal, action: "addToCart"}, 
success: function(theResponse) { 
busy=false; 
$('#buyButton') 
    .error(function(){ 
    var t = $("<img id='buyButton' src='images/checkout.png' />"); 
    $.append(t); 
}); 
} 
}); 

但它無法正常工作。我在這裏做錯了什麼?

在此先感謝。

+0

我想你需要:'$(本)。 append(t);' – Andre 2010-12-12 18:59:32

回答

3

你需要指定給圖像添加:

$('#buyButton').append(t); // NOT $.append(t); 
// OR $(this).append(t); 

更多信息here

一些一般的調試JavaScript的提示。

快速和骯髒:將一個alert消息放置在錯誤函數的第一行,如alert('inside error')。然後加載頁面並查看警報消息是否顯示。您可以將變量放入警報消息中以查看它們的值。如果您沒有看到警告消息,則意味着代碼甚至沒有被加載出於某種原因,因此您必須在更早的時間發出警報消息。 (這可能會非常乏味)。

更好的方法:開始使用Firebug或Safari的Web Inspector來調試javascript。只需在代碼中的任意位置放入debugger,並且當瀏覽器到達該行代碼時,它將停止併爲您提供一個控制檯,以訪問代碼中當前可用的所有變量和函數。

問題可能出在AJAX請求上。看看它是通過嘗試這種代碼返回:

$.ajax({ 
    type: "POST", 
    url: "inc/functions.php", 
    data: { productID: productIDVal, action: "addToCart"}, 
    success: function(data){ alert('success!'); }, 
    error: function(XMLHttpRequest, textStatus, errorThrown){ alert(errorThrown) ;} 
}) 

您可以debugger代替alert消息做什麼是怎麼回事螢火蟲的進一步檢查。

+0

由於某些原因,它仍然不能正常工作。 – zafrada 2010-12-12 19:04:30

+0

奇怪的是,當做像alert這樣的調試時(「image doesnt exist」);它也不會觸發它。 – zafrada 2010-12-12 19:06:29

+0

@zarfrada,你應該把它移動到錯誤塊的權利和後端應該拋出一個錯誤也重現 – kobe 2010-12-12 19:07:33

0

你應該將代碼錯誤塊從成功的塊

error: function(request,error) { 
    var t = $("<img id='buyButton' src='images/checkout.png' />"); 
    $(this).append(t); 
    } 

骨架

刪除是這樣的

$.ajax({ 

}, 
beforeSend: function() { 

}, 

error: function(request,error) { 
    var t = $("<img id='buyButton' src='images/checkout.png' />"); 
    $(this).append(t); 
    }, 
    success: function(request) { 

    } // End success 
}); // End ajax method 
+0

剛剛試過這個,結果相同。該圖像未被加載。 – zafrada 2010-12-12 19:10:21

+0

添加警報(「」);沒有觸發 – zafrada 2010-12-12 19:10:36

+0

@zafrada,你有沒有肯定buyButton的ID爲 – kobe 2010-12-12 19:11:13

相關問題