Основы представления формы AJAX

У меня есть форма, обозначенная так:

<fieldset>
 <form action="testuser.php" method="post" id="thisisatest">
 
  
 <label>Email</label>  
 <label>Pass</label> 
 
 
 </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;

}

И тогда это передается мне через функцию process.pp файла User.php:

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

licensed under cc by-sa 3.0 with attribution.