2017-04-09 10 views
1

jquery.Ajax関数でjson配列を操作しています。構文は非常に混乱しているので、私はこのエラーを見つけることができません。私は私がそのアンカータグを打つと、このエラーがUncaughtReferenceError:HTMLAnchorElement.onclickでfooが定義されていませんか?

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; 
} 
+1

あなたのHTMLで 'onclick = 'foo(this)' 'を使用していて、関数' foo'を定義していませんでした。 –

+0

私はそれを以下に定義しました – sony

+0

私の答えの説明を見てください。 –

答えて

2
UncaughtReferenceError : foo is not defined at HTMLAnchorElement.onclickを示したのfoo()関数を呼び出したとき、私はその後、アンカータグにクリック機能を結合しているやってここにあなたの問題は、あなたが機能を定義しているということです

fooshowの機能のため、showスコープからのみアクセスできます。あなたがHTMLでonclick='foo(this)'を使用するときにあなたが得た理由ですので、それで、あなたはwindowグローバルスコープでfoo機能を参照している

UncaughtReferenceError:fooがHTMLAnchorElement.onclick

で定義されていません

関数fooの宣言をshowの外に移動する必要があるため、windowグローバルスコープからアクセスできます。

+0

ありがとうございました – sony

+0

あなたが大喜びです。 –

+0

もう1つのクリック機能がスムーズに機能しない2回または3回クリックするだけで、Ajaxリクエストがサーバーに送信されます。 – sony

関連する問題