Tworząc rejestrację na stronie próbowałem tak sformułować walidację danych, aby po podaniu błędnych danych nie wczytywała się cała strona, lecz jedynie za pomocą AJAX'a powiadomienie miało być dodawane do pewnego div'a.
Po zaprogramowaniu pliku php (który działa poprawnie, wrzuca dane itp) mam problem z przetworzeniem tego przez JavaScript, ponieważ zamiast łapać przez JS plik JSON, to php go po prostu wyświetla w swojej podstronie przez co JavaScript nie edytuje żadnego diva, tylko po prostu wyświetlana jest tablica na podstronie pliku php.
JS
$(document).ready(function(){
function register(){
$.getJSON('register_test.php', function(json){
if (json.mess.length > 0){
$('#mess').empty();
$.each(json.mess, function(){
var info = this['mess'] + '<br/>';
$('#mess').append(info);
});
}
});
}
$('#reg').click(function(){
register();
});
});
PHP
<?php
include_once './php/base.php';
$login = $_POST['login'];
$passwd = $_POST['passwd'];
$re_passwd = $_POST['re_passwd'];
$email = $_POST['email'];
function walidacja($login, $passwd, $re_passwd, $email){
if ($login != "" && $passwd != "" && $email != "" &&
filter_input(INPUT_POST, "login", FILTER_SANITIZE_STRING) &&
filter_input(INPUT_POST, "passwd", FILTER_SANITIZE_STRING) &&
filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL) &&
strlen($login<21) && strlen($passwd<41) && strlen($email<41) && $passwd==$re_passwd){
}
else{
$mess = array();
if ($login == "" || strlen($login>21) || strlen($login<2)){
array_push($mess, array('mess' => "Login musi składać się z co najmniej 3 i maksymalnie 20 znaków.<br/>"));
}
if ($passwd == "" && strlen($passwd>40) || strlen($passwd<6)){
array_push($mess, array('mess' => "Hasło musi składać się z co najmniej 6 i maksymalnie 40 znaków.<br/>"));
}
if ($email == "" && strlen($email>40) || strlen($email<4)){
array_push($mess, array('mess' => "Adres email musi składać się z co najmniej 4 i maksymalnie 40 znaków.<br/>"));
}
if($passwd != $re_passwd){
array_push($mess, array('mess' => "Podane hasła nie są identyczne.<br/>"));
}
}
return $mess;
}
$mess = walidacja($login, $passwd, $re_passwd, $email);
echo json_encode(array('mess' => $mess),
// Unicode dla JSON
JSON_UNESCAPED_UNICODE);
exit;