我正在操纵jquery.Ajax
函数中的json数组。语法让我很困惑,所以我无法找到这个错误。我正在做什么我已将click函数绑定到anchor标记,然后当我点击该锚标记并调用foo()函数时,此错误显示为UncaughtReferenceError : foo is not defined at HTMLAnchorElement.onclick
function show(thelink)
{
var cat = thelink.innerHTML;
var productContainer = document.getElementById("productContainer");
$.ajax({
type:"POST",
url:"fetchdata1",
data:"cat="+cat,
success:function(data){
productContainer.innerHTML ="";
var $productContainer = $('#productContainer');
$.each(data,function(key,value){
if(value['newVar'] === 1)
{
$productContainer.append("<div id='productBox' class='grid_3'>\n\
<a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
<a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
<span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span>\n\
<br/><br/><a href='#' onclick='foo(this)' pid='"+value['id']+"'>REMOVE</a></div>");
}
else{
$productContainer.append("<div id='productBox' class='grid_3'>\n\
<a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
<a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
<span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span></div>");
}
}) ;
}
});
function foo(obj){
var pid = $(obj).attr("pid");
$(obj).bind("click", function(){
$.ajax({
type:"POST",
url:"removeFromWishlist",
data:"pid="+pid,
success:function(response){
}
});
});
}
return false;
}
答案 0 :(得分:2)
您的问题是您在foo
函数中定义了函数show
,因此只能从show
范围访问它。
因此,当您在HTML中使用onclick='foo(this)'
时,您在foo
全局范围内引用window
函数,这就是您获得的原因:
UncaughtReferenceError:未在HTMLAnchorElement.onclick上定义foo
您需要在foo
函数之外移动函数show
声明,以便可以从window
全局范围访问它。