This is my typical solution, so YMMV.
PHP (, "add_user.php", "login.php", "do_something.php" ), "" , :
switch ($_POST['action']) {
case 'addUser':
require 'add_user.php';
break;
case 'login':
require 'login.php';
break;
default:
$response['result'] = 'badaction';
break;
}
echo json_encode($response);
HTTP- POST, - JSON ( , PHP POST , jQuery JSON , JSON2 json.org, eval()), :
<?php
if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])) {
die;
}
do {
if (!isset($_POST['something'],$_POST['parameter'],$_POST['whatever'])) {
$response['result'] = 'badinfo';
continue;
}
} while(0);
jQuery AJAX, JS . , , , (XML, URLEncoded ..), ; "" :
$format = strtolower(isset($_REQUEST['format']) ? $_REQUEST['format'] : null);
if (!$format) {
if (isset($_SERVER) && is_array($_SERVER) && array_key_exists('HTTP_ACCEPT',$_SERVER)) {
$accept = $_SERVER['HTTP_ACCEPT'];
if (stripos($accept, 'application/json') !== false || stripos($accept, 'text/javascript') !== false) {
$format = 'json';
}
}
if (!$format) {
$format = 'url';
}
}
switch ($format) {
case 'json':
echo json_encode($response);
break;
case 'url':
default:
echo http_build_query($response);
break;
}
, , , , , .