2010-07-26 4 views
2

J'ai codé avec php/CI depuis un petit moment et je commence à comprendre, mais j'essaie de faire le saut pour utiliser jQuery + quelques trucs ajax et je n'arrive pas à l'obtenir travailler. C'est comme si le script n'était même pas vu.Première tentative d'ajax, le script n'étant pas vu?

Ce que je voudrais faire est d'appeler la fonction java/test lorsque l'utilisateur clique sur le bouton soumettre. Je voudrais ajouter quelque chose comme si (ajax) faire quelque chose, qui est pourquoi je l'ai dans les données de formulaire, mais pas ce qu'il appelle la fonction de soumission - J'ai ajouté le retour faux afin qu'il ne déclenche pas la fonction de soumission , mais c'est encore le cas.

Voici mon code, toute aide serait géniale. Merci

java.php // Contrôleur

<?php 

class Java extends Controller{ 

    function index(){ 
     $this->load->view('java_view'); 
    } 

    function submit(){ 
     $one = $this->input->post('one'); 
     $two = $this->input->post('two'); 

     echo $one; 
    } 
      function test(){ 
     $one = $this->input->post('one'); 
     $two = $this->input->post('two'); 

     echo $two; 
    } 


} 

java_view.php // ViewFile

<html> 
<header> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="javascript"> 
    $(document).ready(function(){ 
     $('#submit').click(function(){ 

      var form_data = { 
       one: ('#one').val(), 
       two: ('#two').val(), 
       ajax: '1', 
      }; 

      $.ajax({ 
      url: "<?php echo site_url('java/test'); ?>", 
      type: 'POST', 
      data: form_data, 
      success: function() { 
       alert('success'); 
      } 
      }); 
          return false; 
     }); 
    }); 
</script> 

</header> 

<body> 

<?php 

echo form_open('java/submit'); 

//setting up the fields 
$form_data = array(
    'name' => 'one', 
    'id' => 'one', 
); 

echo "<p> One </p> <br/>"; 

echo form_input($form_data); 

$form_data = array(
    'name' => 'two', 
    'id' => 'two', 
); 

echo "<br/> <p>Two</p> <br/>"; 

echo form_input($form_data); 

$form_data = array(
    'name' => 'submit', 
    'id' => 'submit', 
    'value' => 'Submit', 
); 
echo "<br/>"; 

echo form_submit($form_data); 
echo form_close(); 

Répondre

5

Cette ligne:

$('#submit').onclick(function(){ 

devrait être:

$('#submit').click(function(){ 

Je suppose que #submit n'est pas autrement input type="submit" page se rechargera à moins que vous mettez return false à la fin du gestionnaire de clic.

Plus d'info:

http://api.jquery.com/click/

Mise à jour:

Essayez ceci (ajouté live et quelques autres modifications):

$(document).ready(function(){ 
    $('#submit').live('click', function(){ 

     var form_data = { 
      one: ('#one').val(), 
      two: ('#two').val(), 
      ajax: '1', 
     }; 

     $.ajax({ 
     url: "<?php echo site_url('java/test'); ?>", 
     type: 'POST', 
     data: form_data, 
     success: function() { 
      alert('success'); 
     }); 

     return false; 
    }); 
}); 
+0

Merci pour cela, mais ce n'était pas exactement ce que je cherchais (ma faute n'était pas explicite) J'ai édité mon post si vous pouviez jeter un autre coup d'oeil. Ajouté le bit de retour faux aussi. Merci – tshauck

+0

@tshauck: Voir ma mise à jour s'il vous plaît. Essayez le code mis à jour s'il vous plaît. – Sarfraz

+0

Salut, j'ai essayé le code, il continue de déclencher la fonction de soumission comme si on cliquait sans javascript. – tshauck

2

Mieux encore?

$('#submit').live("click", function(){ 

Si vous mettez à jour dynamiquement les DOM du tout ou votre événement onclick peut être appelé plus d'une fois par chargement de la page, il est plus sûr d'utiliser en direct()

http://api.jquery.com/live/

+0

Salut, bon conseil, édité mon post pour être plus ce que je voulais. Si vous pouviez regarder à nouveau, ce serait bien. Merci. – tshauck

1

Juste une pensée. .. as-tu essayé explicitement d'indiquer l'URL de l'appel Ajax dans ton JavaScript? Il se pourrait qu'il ne comprenne pas le saut dans php pour faire écho au chemin de l'URL.

+0

J'aimerais que ça soit, je l'ai testé en dur et ça ne marche pas. Merci pour la suggestion cependant. – tshauck

Questions connexes