編集:何らかの理由で、送信ボタンを押したときにページがリフレッシュされているようです。それは私の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>');
}
}
);
});
});
サーバーログまたはブラウザにエラーが発生しましたか? ''
で二重引用符をエスケープしないで試してみます。Firebugを使用しますか?あなたのデバッグでは、JavaScriptでブレークポイントを設定し、実行/返されたものなどを確認するのに多くの助けが必要です。 –
正直なところ、エラーを表示する方法がわかりません。 ..私は何かエラーを見ているとは思わない。病気のインストールfirebug – Tyler