2016-05-22 5 views
0

Ich bin nicht sehr vertraut mit Ajax in Codeigniter. Ich möchte einfach den Vornamen und den Nachnamen anzeigen, den ich gerade in das div mit id (result) eingegeben habe. Aber wenn ich auf "Senden" klicke, wird die Seite nur neu geladen. Was ist falsch ? Danke im Voraus. Gut, das ist meine Ansicht Datei employee.phpSeite wird nach dem Senden in Codeigniter während der Verwendung von Ajax neu geladen

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <div class="box"> 
    <h1><?php echo lang('employee:insert'); ?></h1> 
    <div class="form_box"> 
     <?php 

      echo form_open(); //form open 

      echo form_label('First Name: ', 'fn'); 
      $data = array('name' => 'first_name','type' => 'text', 'id' =>'first_name'); 
      echo form_input($data)."<br>"; 

      echo form_label('Last Name: ', 'ln'); 
      $data = array('name' => 'last_name','type' => 'text', 'id' => 'last_name'); 
      echo form_input($data)."<br>"; 

      $data = array('type' => 'submit', 'value' => 'Submit', 'id' => 'submit'); 
      echo form_submit($data); 

      echo form_close(); // form close 
     ?> 
    </div> 
</div> 
<div id="result"> 
    here 
</div> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#submit").click(function(event) { 
      event.preventDefault(); 
      var first_name: $('input#first_name').val(); 

      $.ajax({ 
       type: "POST", 
       url: "<?php echo site_url('admin/employee/insert'); ?>", 
       dataType: 'text', 
       data: {name: first_name}, 
       success: function(data) { 
        if(res) { 
         $("div#result").html(res.un); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

Dies ist mein Controller Datei admin.php

<?php 
defined('BASEPATH') or exit('No direct script access allowed'); 

class Admin extends Admin_Controller { 
    public function __construct() { 
     parent::__construct(); 

     $this->lang->load("employee"); 
     $this->load->model('emp_model'); 

     $this->template 
      ->append_css("module::admin.css") 
      ->append_js("module::admin.js") 
      ->append_js("module::jquery-2.2.3.min.js"); 
    } 

    public function index() { 
     $this->template->build("admin/employee"); 
    } 

    public function insert() { 
     $data = array(
       'first_name' => $this->input->post('first_name'), 
       'last_name' => $this->input->post('last_name') 
      ); 

     echo json_encode($data); 
    } 
} 
+0

Eingabe-Typ ändern Eingabe-Eingabe-Taste oder verwenden .submit statt .click – Poria

+0

Die Seite neu laden gestoppt, aber ich bin immer noch nirgends. Auch nach dem Klicken auf den Submit-Button passiert nichts. Die Ajax-Funktion funktioniert nicht. –

+0

Wird dein Ajax gefeuert? Siehst du irgendwelche Fehler in der Konsole? – Poria

Antwort

0

In Ihrer Ajax Sie sind nur einen Parameter data: {name: first_name}, Senden und Sie holen beide in Controller, der internen Serverfehler erzeugt .. sehen Sie hier im Controller, Sie haben $this->input->post('last_name'); von Ihrem Ajax r nicht gesendet equest

Ihr Fehler: Sie senden nur einen Parameter von der AJAX-Anfrage, z. B. 'name', und im Controller holen Sie first_name, last_name. Auch Sie senden Anfrage an falsche URL, warum verwenden Sie Mitarbeiter in der URL? <?php echo site_url('admin/employee/insert'); ?>

versuchen, beide Parameter so etwas wie

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#submit").click(function(event) { 
      event.preventDefault(); 
      var first_name = $('input#first_name').val(); 
      var last_name = $('input#last_name').val(); 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo site_url('admin/insert'); ?>", 
       dataType: 'text', 
       data: {'first_name': first_name,'last_name':last_name}, 
       success: function(data) { 
        if(data) { 
         $("div#result").html(data); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

Hinweis zu senden: Ich var last_name: $('input#last_name').val(); in Ihrer Ajax-Post-Anforderung hinzugefügt und verändert diese {name: first_name}-data: {'first_name': first_name,'last_name':last_name}

Hoffe, es hilft!

+0

Danke es funktioniert ... und über "Mitarbeiter" in URL, ich arbeite an Pyrocms Modulentwicklung, so ist es mein Modulname. Danke noch einmal. –

+0

Akzeptieren Sie die Antwort, wenn es funktioniert, wie Sie sagen, es funktioniert – Poria

Verwandte Themen