2010-11-28 1 views
0

編集:何らかの理由で、送信ボタンを押したときにページがリフレッシュされているようです。それは私のjqueryかPHPですか?

ajaxとkohana phpフレームワークを使用して、このシンプルなチャットルームスクリプトで作業しています。私は私のスクリプトを新しいユーザーを作成するために働くように見えることができないと私はPHPとJavaScriptでひどいデバッグのスキルを持っています。 HERESに

ユーザークラスのコード:

:JSON要求を処理するため

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; 
} 
    } 

と相続コード言って何かがあるかどうとにかく、私は知らない...ここに私のコードです

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); 
} 

、それがフォームを送信しているようにHERESにjQueryと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

サーバーログまたはブラウザにエラーが発生しましたか? ''

Success!
'' – Philar

+0

で二重引用符をエスケープしないで試してみます。Firebugを使用しますか?あなたのデバッグでは、JavaScriptでブレークポイントを設定し、実行/返されたものなどを確認するのに多くの助けが必要です。 –

+0

正直なところ、エラーを表示する方法がわかりません。 ..私は何かエラーを見ているとは思わない。病気のインストールfirebug – Tyler

答えて

1

が見えます。アクションパラメータがないので、リフレッシュのように動作し、同じページに送信されます。送信機能の最後にreturn false;を追加してみてください。

$(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

それは素晴らしい仕事をしてくれてありがとう...私もそれは間違っていた私のSQLクエリを変更する必要があった – Tyler