2010-11-28 3 views
0

편집 : 어떤 이유로 제출 버튼을 눌렀을 때 페이지를 새로 고치는 것처럼 보입니다 ... 어떤 아이디어입니까?내 jquery 또는 PHP 있나요?

이 간단한 chatroom 스크립트에서 ajax 및 kohana PHP 프레임 워크를 사용하여 작업하고 있습니다. 그래도 새 사용자를 만들기위한 스크립트를 만들 수없는 것 같아요. PHP와 자바 스크립트에서 끔찍한 디버깅 기술을 가지고 있습니다. 를 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; 
} 
    } 

과를 heres 코드 말할 아무것도가 있다면 어쨌든 나도 몰라 .. 여기 내 코드입니다

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와 그것이 양식을 제출처럼

<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

에 큰 따옴표를 사용하지 않고 시도하십시오. 방화 광을 사용합니까? 그것은 귀하의 디버깅과 자바 스크립트에서 중단 점을 설정하고 실행/반환 등 볼 많은 도움이 될 것입니다 ... –

+0

솔직히 오류를 볼 수있는 방법을 모르겠지만 ... 내 PHP에서 그들을 처리하지 않는 한 .. .. 그래서 나는 어떤 오류라도보고 있다고 생각하지 않는다. 아프다. 방화범이 걸려서 설치한다. – Tyler

답변

1

가 보이는 HTML. 액션 매개 변수가 없으므로 새로 고침처럼 작동하여 동일한 페이지에 제출합니다. 제출 기능 끝에 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

관련 문제