2016-10-26 18 views
0

ajaxを使用してコントローラ内の関数にデータを送信しようとしていますが、その下のエラー(画像内)は変数を渡しません。複数のPHP変数をajax関数onclickに渡すには

私はcodeigniterフレームワークを使用しています。このajax関数は私の見解です。

$(document).ready(function(){ 

function myButton(id1, id2, id3){ 
    $.ajax({ 
     method: "POST", 
     url: "<?php echo base_url() ?>controller/function/"+id1+"/"+di2+"/"+id3, 
     data: { 
     id1:id1, 
     id2:id2, 
     id3:id3 
     } 
     dataType : 'text', 
     success:function(data){ 
     location.reload(); 
    }); 
} 
} 

<div align="center"> 
    <a> 
    <button onclick="myButton('<?php echo $id1; ?>', '<?php echo $id2; ?>', '<?php echo $id3; ?>')"> 
     <img src="<?php echo base_url();?>images/button.png" > 
    </button> 
    </a> 
</div> 

Uncaught ReferenceError: myButton is not defined(…)

enter image description here

+0

エコーは ';で終わる必要があります。 'like this '<?php echo base_url(); ?> ' –

答えて

3

現在、機能があることを意味し、DOMがロードされた後までに定義されていない)$(ドキュメント).ready(の外で関数を定義しますボタンが設定されているときには定義がありません。

これは、次のようになります。

<script> 
var myButton = function(id1, id2, id3){ 
       $.ajax({ 
        method: "POST", 
        url: "<?php echo base_url(); ?>controller/function/"+id1+"/"+id2+"/"+id3, 
        data: { 
        id1:id1, 
        id2:id2, 
        id3:id3 
        }, 
       dataType : 'text', 
        success:function(data){ 
        location.reload(); 
       } 
      }); 
}; 

    $(document).ready(function(){ 
//This isn't really needed 
}); 
</script> 



<div align="center"> 
    <a> 
    <button onclick="myButton('<?php echo $id1; ?>', '<?php echo $id2; ?>', '<?php echo $id3; ?>')"> 
     <img src="<?php echo base_url();?>images/button.png" > 
    </button> 
    </a> 
</div> 
+0

これは動作しませんでした。 – learningbyexample

+0

コンソールに同じエラーがありますか? – PLan

+0

はい、同じエラー – learningbyexample

0

あなたは、内側document.ready関数内myButtonを宣言しています。グローバルスコープで宣言する必要があります。

<script> 
// Define in global scope 
function myButton(id1, id2, id3){ 
    $.ajax({ 
     method: "POST", 
     url: "<?php echo base_url() ?>controller/function/"+id1+"/"+di2+"/"+id3, 
     data: { 
     id1:id1, 
     id2:id2, 
     id3:id3 
     } 
     dataType : 'text', 
     success:function(data){ 
     location.reload(); 
    }); 
} 
</script> 

<div align="center"> 
    <a> 
    <button onclick="myButton('<?php echo $id1; ?>', '<?php echo $id2; ?>', '<?php echo $id3; ?>')"> 
     <img src="<?php echo base_url();?>images/button.png" > 
    </button> 
    </a> 
</div> 
+3

本当にdocument.readyは必要ありません。関数定義はその中にある必要はありません。 –

+0

良い点@Pamblam、それは本当です。 – romellem

0

答えはそう、これは無効Javascriptを出力します<?php echo base_url(); ?>を使用し、以上であってもよい1 charcter ;かもしれ!!!

$(document).ready(function(){ 

function myButton(id1, id2, id3){ 
    $.ajax({ 
     method: "POST", 
     url: "<?php echo base_url(); ?>controller/function/"+id1+"/"+di2+"/"+id3, 
     data: { 
     id1:id1, 
     id2:id2, 
     id3:id3 
     } 
     dataType : 'text', 
     success:function(data){ 
     location.reload(); 
    }); 
} 
} 

<div align="center"> 
    <a> 
    <button onclick="myButton('<?php echo $id1; ?>', '<?php echo $id2; ?>', '<?php echo $id3; ?>')"> 
     <img src="<?php echo base_url();?>images/button.png" > 
    </button> 
    </a> 
</div> 
関連する問題