Jump to content
php.lv forumi

json


sandrulis

Recommended Posts

Ja tev ir one-page application, tad ielādē formas datus ar json un renderē ar JS, bet parasti izvada HTML no servera un submito ar AJAX, ja tas nepieciešams. Piemēram, plikai admina paneļa login lapai, kurā bez login formas nekā cita nav, nav jēgas submitot datus ar AJAX.
Īsāk sakot - "vislabāk" ir subjektīvs jēdziens, atkarīgs no situācijas un nepieciešamības.

Piemēra pēc - iemet šo kodu PHP failā uz sava lokālā webservera ar nosaukumu "test.php" (vai pamaini "url" parametru jQuery.ajax() izsaukumā), un tad skaties, domā, ko kas dara.
 

<?php
if (isset($_POST['name'], $_POST['address']))
{
	$name = trim($_POST['name']);
	$address = trim($_POST['address']);
	
	if ((mb_strlen($name) < 3) // too short
		|| (preg_match('/\p{L}+/', $name) !== 1)) // no letters
	{
		echo json_encode(array('error' => 'name'));
		die();
	}
	
	if (empty($address))
	{
		echo json_encode(array('error' => 'address'));
		die();
	}
	
	// save data in db or w/e here
	
	echo json_encode('success' => 1);
	die();
}
?>
<html>
	<head>
		<meta charset="UTF-8">
	</head>
	<body>
		<form>
			<input type="text" name="name" placeholder="Vārds, uzvārds" /><br />
			<input type="text" name="address" placeholder="Adrese" /><br />
			<button type="submit">Ievadīt</button>
		</form>
		<script type="text/javascript" src="//code.jquery.com/jquery-2.1.4.min.js"></script>
		<script type="text/javascript">
			jQuery(document).ready(function ()
			{
				jQuery('form').on('submit', function (e)
				{
					e.preventDefault(); // cancel browser form submit
					
					jQuery.ajax({
						url: 'test.php',
						type: 'post',
						data: jQuery(this).serialize(), // collect input data
						dataType: 'text',
						success: function (response)
						{
							if (response.success)
							{
								alert('Viss kārtībā!');
							}
							else if (response.error)
							{
								if (response.error === 'name')
								{
									alert('Vārdam jābūt vismaz 3 burtus garam!');
								}
								else if (response.error === 'address')
								{
									alert('Lūdzu ievadiet adresi!');
								}
							}
						}
					});
				});
			});
		</script>
	</body>
</html>
Edited by jurchiks
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...