2010-11-28 1 views
0

Modifier: pour une raison quelconque, il semble que son rafraîchissement de la page en appuyant sur le bouton soumettre ... des idées?Est-ce mon jquery ou php?

de travailler sur ce script simple chatroom en utilisant ajax et kohana php framework. Je n'arrive pas à faire fonctionner mon script pour créer un nouvel utilisateur et j'ai de terribles compétences de débogage en php et javascript. Quoi qu'il en soit, je ne sais pas s'il y a quelque chose d'autre à dire .. voici mon code:

Heres le code pour la classe utilisateur:

class Model_User extends Kohana_Model 
{ 
var $_loaded = false; 
var $session = false; 
var $username = false; 
var $loginkey = false; 

function __construct() 
{ 
    $this->session = Session::instance(); 
} 

function new_user($username) 
{ 
    if($this->username_exists($username)) 
    return false; 
    $this->username = $username; 
    $this->generate_key(); 
    return $this->update_db(); 
} 

function username_exists($username) 
{ 
    if(DB::select()->from('users')->where('username', '=', $username)->execute()->count()<1); 
    return false; 
    return true; 
} 

//helper methods 

private function generate_key() 
{ 
    if(! $username) 
    return false; 
    $this->loginkey = md5($username.((int)mt_srand()*1000)); 
    $this->session->set('loginkey',$this->loginkey); 
    return true; 
} 

private function update_db() 
{ 
    if(DB::insert('users', array('username'=>$this->username, 'loginkey'=>$this->loginkey))->execute()) 
    return true; 
    return false; 
} 
    } 

et Heres le code pour gérer la demande JSON:

public function action_new_user(){ 
    $user = new Model_User(); 
    $json['username_exists'] = "true"; 
    $username = $_POST['username']; 
    if(isset($username)) 
    { 
    if($user->username_exists($username)) 
    { 
    echo json_encode($json); 
    return; 
    } 
    $user->new_user($_POST['username']); 
    $json['username_exists'] = "false"; 
    } 
    $this->request->response = json_encode($json); 
} 

et le Heres jquery et html

<div id="chat_entry_errors"> 

</div> 

<form id="new_chat_entry" name="posttest"> 
    <input type="text" name="username" /> 
    <input type="submit" name="submit" value="New User" /> 
    </form> 

$(document).ready(function(){ 
$('#new_chat_entry').submit(function(){ 
    $.post('json/new_user', $('#new_chat_entry').serialize(), 
    function(data){ 
    if(data.username_exists=='true'){ 
    $('#chat_entry_errors').html('<div class=\"error\">Sorry that username is currently unavailable. Please choose another.</div>'); 
    } 
    else { 
    $('#chat_entry_errors').html('<div class=\"error\">Success!</div>'); 
    } 
    } 
); 
}); 
    }); 
+0

Observez-vous une erreur dans les journaux du serveur ou dans votre navigateur? Essayez également sans échapper les guillemets dans ''

Success!
'' – Philar

+0

Utilisez-vous Firebug? Cela devrait beaucoup aider avec votre débogage à définir un point d'arrêt dans vos javascripts et voir ce qui est exécuté/retourné, etc ... –

+0

Honnêtement, je ne sais pas comment voir les erreurs ... sauf si je les manipule dans mon php .. .. donc je ne pense pas que je vois des erreurs .. mal installer firebug – Tyler

Répondre

1

on dirait qu'il est de soumettre le formulaire. Comme vous n'avez pas de paramètre d'action, il se soumettra à la même page, agissant comme un rafraîchissement. Essayez d'ajouter return false; à la fin de votre fonction de soumission.

$(document).ready(function(){ 
$('#new_chat_entry').submit(function(){ 
    $.post('json/new_user', $('#new_chat_entry').serialize(), 
    function(data){ 
    if(data.username_exists=='true'){ 
    $('#chat_entry_errors').html('<div class=\"error\">Sorry that username is currently unavailable. Please choose another.</div>'); 
    } 
    else { 
    $('#chat_entry_errors').html('<div class=\"error\">Success!</div>'); 
    } 
    } 
); 
return false; 
}); 
    }); 
+0

merci qui a bien fonctionné ... J'ai aussi dû changer ma requête sql c'était faux aussi – Tyler

Questions connexes