2013-05-27 6 views
0

Je travaille sur ce codeFormulaire de soumission en utilisant JQuery & ajax

$("#library").submit(function(e){ 
    //return false; 
    e.preventDefault(); 
    dataString = $("#library").serialize(); 
    $.ajax({ 
     type:"POST", 
     url:"<?= base_url() ?>index.php/library/comment", 
     data: dataString, 
     dataType: 'json', 
     success: function(data){ 
      $("#librarycomment").val(""); 
      $('#comment-list').prepend('<li><div class="avatar"><img src="<?= base_url();?>asset/css/library/images/picture.jpg">' + 
             '</div>' + '<div class="colset">' + '<div class="author">' + data.user + 
             '&nbsp;<strong>' + data.date + '</strong>' + 
             '</div>' + '<div class="comment-content">' + 
             data.text + '</div></div></li>').find("li:first").hide().slideDown('slow'); 
     } 
    }); 
}); 

Où je voudrais avoir une validation de forme agréable sans avoir à rafraîchir le navigateur. Quelque peu le code ci-dessus ne fonctionne pas.

J'ai essayé de remplacer e.preventDefault(); avec

  • e.stopPropagation
  • return false

Tout ne donnant rien du tout. Le formulaire soumet les données et stocke les données dans la base de données. Cependant, la partie ajax ne fonctionne pas silencieusement comme je l'espère.

Est-ce que quelqu'un sait ce que je manque ici?

+0

Pouvez-vous mettre le retour false ou preventdefault dans la fonction de réussite? – FLX

+0

salut FC merci de répondre. Cela ne marche toujours pas même si je mets ceux-ci dans le succès. Cependant, j'ai trouvé un travail en changeant de .submit() à un .click(). Évidemment, je dois aussi changer mon formulaire pour

et créer un bouton (au lieu du bouton submit). – Jeremy

+0

Je ne sais pas si c'est un meilleur moyen, avec seulement un clic que l'utilisateur ne peut pas soumettre avec la touche 'Entrée', c'est mauvais pour l'accessibilité. Peut-être remplacer click by ('submit' ...). – FLX

Répondre

0
class somehelperclass 
{ 
    public function unserialize($input, $pIndex = 'data') 
    { 
     if(!isset($input[$pIndex])) 
      exit('index '.$pIndex.' is not exist'); 
     parse_str($input[$pIndex], $input); 
     $post = array(); 
     foreach($input as $index => $value) 
     { 
      $index = preg_replace('/\;/', '', $index); 
      $post[$index] = $value; 
     } 
     return $input; 
    } 

    public function jsonResponse($array) 
    { 
     header("Content-type: application/json"); 
     echo json_encode($array); 
     exit(); 
    } 
} 

// your controller 

class Library extends CI_Controller 
{ 
    public function comment() 
    { 
     $this->load->library('somehelperclass'); 
     $_POST = $this->somehelperclass->unserialize($_POST, 'data'); 
     $this->somehelperclass->jsonResponse($_POST); 
    } 
} 

// js 

$("#library").submit(function(){ 
    that = $(this); 
    $.ajax({ 
     type: "post", 
     url: "/index.php/library/comment", 
     data: {data: that.serialize()}, 
     dataType: 'json', 
     success: function(response) 
     { 
      $("#librarycomment").val(""); 
      $('#comment-list').prepend('<li><div class="avatar"><img' 
      + ' src="/asset/css/library/images/picture.jpg"></div>' 
      + '<div class="colset"><div class="author">' 
      + response.user + '&nbsp;<strong>' + response.date + '</strong>' + 
      '</div>' + '<div class="comment-content">' + 
      response.text + '</div></div></li>').find("li:first").hide().slideDown('slow'); 
     } 
    }); 
    return false; 
}); 
Questions connexes