2013-09-10 58 views
0

我有一個表格標記像這樣:AJAX表單提交基本

<fieldset> 
    <form action="testuser.php" method="post" id="thisisatest"> 
     <input type = "hidden" name = "req" value = "REQUSERSIGNIN"> 
     <input type = "hidden" name = "platform" value = "WEB">  
     <label>Email</label> <input type = "text" name = "useremail" value = "" id="userLabel"> <br /> 
     <label>Pass</label><input type = "password" name = "userpass" value = "" id="userPassword"> 
     <br /> 
     <input type = "submit" value = "Submit"> 
    </form> 
</fieldset> 

而且我試圖做一個Ajax調用就像這樣:

$("#thisisatest").submit(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "http://localhost/api/apis/User.php?req=REQUSERSIGNIN", 
     data: "useremail=" + $("#userLabel").val() + "&userpass" + $("#userPassword").val(), 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
    return false; 
}); 

我的PHP文件的功能,它執行提交是FF:

public function userSignIn ($request) {  

    $result[COCNST::TYPE] = COCNST::TYPELOGIN; 

    // key info missing 
    if (empty($request['useremail']) || empty($request['userpass'])) {  
     $result[COCNST::STATUS] = "NO"; 
     $result[COCNST::MESSAGE] = COCNST::ERR_NOEMAILORPASS; 
     $result[COCNST::MESSAGEUSER] = COCNST::ERRMSG_NOEMAILORPASS;      
     return $result;    
    } 

    $response = $this->db->userSignIn($request['useremail']); 

    $pass = trim($request['userpass']);            
    // login does not exist or password incorrect   
    if (! is_numeric($response['user']['id']) || crypt($pass, $response['user']['pass']) != $response['user']['pass']) { 
     $result[COCNST::STATUS] = COCNST::STATUS_NO; 
     $result[COCNST::MESSAGE] = COCNST::ERRMSG_LOGINFAILED; 
     $result[COCNST::MESSAGEUSER] = COCNST::ERRMSG_LOGINFAILED;          
     return $result; 
    } 


    if ($response['user']['signupstatus'] == COCNST::USERSIGNUPEMAILSTATUS_EMAILNOTCONFIRMED) {   
     $result[COCNST::STATUS] = COCNST::STATUS_NO; 
     $result[COCNST::MESSAGE] = COCNST::ERR_EMAILNOTCONFIRMED; 
     $result[COCNST::MESSAGEUSER] = COCNST::ERRMSG_EMAILNOTCONFIRMED;      
     return $result;    

    } 


    $result[COCNST::STATUS] = COCNST::STATUS_YES; 
    $result[COCNST::MESSAGE] = COCNST::OK; 
    $result[COCNST::MESSAGEUSER] = COCNST::MSG_LOGINYES; 
    $result[COCNST::HANDLE] = $response['user']['handle']; 
    $result[COCNST::UUIDUSER] = $response['user']['uuid']; 
    $result[COCNST::USERPIC] = $response['user']['picpath']; 
    $result[COCNST::EMAIL] = $response['user']['email']; 
    $result[COCNST::SIGNUPSTATUS] = $response['user']['signupstatus']; 
    $result[COCNST::TOKENLOGIN] = $response['user']['logintoken']; 

    return $result; 

} 

然後這個正在通過user.php的文件的processpost功能送入我:

public function processPost ($reqtype, $request) { 

    $response = 0; 

    // user confirm email. user confirm link 
    // user reset request. user   

    switch ($reqtype) { 
     case COCNST::REQUSERSIGNIN : 
      $user = new COUser(); 
      $response = json_encode($user->userSignIn($request));   
      break; 
       (rest of code).... 
    } 
} 

當我提交沒有ajax的表單,它似乎工作,但我似乎無法通過ajax複製它。我哪裏錯了?

回答

1

請使用相對路徑在

url: "http://localhost/api/apis/User.php?req=REQUSERSIGNIN", 

可以是等(取決於實際的目錄結構)

url: "/api/apis/User.php?req=REQUSERSIGNIN", 

還數據將具有paranthesis {}

請參閱此示例

data: { name: "John", location: "Boston" }