检查图像是否存在,如果没有加载它

时间:2010-12-12 18:57:41

标签: ajax jquery

如果还没有加载,我需要加载图像。 为此我正在使用这样的错误函数:

$.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);
 });
}  
});  

但它不起作用。我在这里做错了吗?

提前致谢。

2 个答案:

答案 0 :(得分: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) ;}
})

您可以将alert消息替换为debugger,以进一步检查Firebug的内容。

答案 1 :(得分: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