2016-03-19 9 views
0

Meine Codeigniter Ajax-Anfrage funktioniert, wenn JS inner Embed. Aber wenn ich es als externe JS Datei verwenden möchte. Es funktioniert nicht. Warum das?Codeigniter Ajax-Anfrage funktioniert nicht, wenn externe JS-Datei verwenden

Ansicht 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>

Haupt-Controller

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

Bitte versuchen Sie zu echo (json_encode ($ student_data)); – krutssss

Antwort

1

Sie können Basis-uRL gloabl Variable in Javascript in Ihrem Kopf oder eine Ansicht erstellen, die immer

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

und url externen js Dateipfad verwendet diesen Code setzen Übersetzen loading Typ

<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

Zuerst brauchen Sie nicht() an echo (json_encode ($ student_data));

Und zweitens kann man nicht einfach kopieren

url: 'php echo base_url();' + 'Main/Testarray'

an externe js, müssen Sie base_url() übergeben, bevor das Hinzufügen externer

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

Es ist wie url aussehen: base + 'main/Testarray'

Verwandte Themen