2016-03-19 10 views
0

私のCodeigniterは、JS inner埋め込み時にajaxリクエストが機能しています。しかし、私は外部JSファイルとして使用したいとき。それは動作しません。何故ですか?外部JSファイルを使用しているときにCodeigniter ajaxリクエストが機能していません

ビューsample_ajax

<html> 
 
    <head> 
 
     <title></title> 
 
     <script src='<?= base_url() ?>public/js/jquery.min.js'></script> 
 
     <!--<script src='<?= base_url() ?>public/js/script.js'></script>When put script part on external script.js, it's not working -->  
 
    </head> 
 
    <body> 
 
     <div> 
 
      <input name="submit1" id="submit1" type="button" value="Load"> 
 
     </div> 
 
     <div id="receive" style="height: 50px; background-color: yellowgreen">  
 
     </div> 
 

 
     <script type="text/javascript"> 
 
     $(document).ready(function() { 
 
      $('#submit1').click(function() { 
 
       $.ajax({ 
 
        url: '<?php echo base_url();?>' + 'main/testarray', 
 
        dataType: "JSON", 
 
        type: "POST", 
 
        success: function (retdata) { 
 
         $("#receive").html(retdata.name); 
 
        } 
 
       }); 
 
      }); 
 
     }); 
 
     </script>   
 
    </body> 
 
</html>

メインコントローラ

class Main extends CI_Controller { 
 
    public function test() { 
 
     $this->load->view('home/sample_ajax'); 
 
    } 
 
    public function testarray() { 
 
     $student_data = [ 
 
      'name' => 'Sample Name', 
 
      'age' => '26' 
 
     ]; 
 
     echo(json_encode($student_data)); 
 
    } 
 
}

+0

エコーするようにしてください(json_encode($ student_data)); – krutssss

答えて

1

をあなたは、ヘッダーや、常にこのコード

<script type="text/javascript"> 
    var baseURL= "<?php echo base_url();?>"; 
    </script> 

とURLのjs外部ファイルパスの使用にこれを置くロードビュー内のJavaScriptのベースURL gloabl変数を作成することができますタイプ

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#submit1').click(function() { 
       $.ajax({ 
        url: baseURL+'main/testarray', 
        dataType: "JSON", 
        type: "POST", 
        success: function (retdata) { 
         $("#receive").html(retdata.name); 
        } 
       }); 
      }); 
     }); 
     </script>  
1

まずあなたがエコーで)(必要はありません(json_encode($のstudent_data));

そして第二に、あなただけの

URLをコピーすることはできません: 'PHPエコーBASE_URLを();' +外部JSへ

'/ testarrayメイン'、あなたは(BASE_URLを渡す必要が)外部

<script type="text/javascript"> 
var base = "<?php echo base_url();?>"; 
</script> 
<script src="<?php echo base_url();?>js/yourjavascriptexternal.js"></script> 

を追加する前に、それはURLのようになります。ベース+ 'メイン/ testarray'

関連する問題