【发布时间】:2015-08-30 02:21:24
【问题描述】:
我在 PHP 中构建了一个单点入口控制器(所有路由都通过 index.php)。它工作得很好,但我在使用 ajax 调用设置 $_POST 变量时遇到了问题。
我猜是因为 ajax 调用的 url 是 /submit 而不是 /index.php
$url_page 是来自浏览器 url 的页面名称。这是在我不在此示例中的函数中处理的
switch($url_page)
{
case '':
echo 'When login works this will redirect you to to correct page';
break;
case 'admin':
$template_page->set_values('URL', URL);
$template_page->set_values('PATH', PATH);
$template_page->set_values('NAVIGATION', '');
$template_page->set_values('SIDENAVIGATION', '');
$template_page->pageContet('admin.html');
echo $template_page->build_template();
break;
case 'student':
$template_page->set_values('URL', URL);
$template_page->set_values('PATH', PATH);
$template_page->set_values('INCJS', URL.'/assets/js/studentjs.js');
$template_page->set_values('NAVIGATION', file_get_contents(TEMPLATES.'/studentNav.html'));
$template_page->set_values('SIDENAVIGATION', file_get_contents(TEMPLATES.'/userSideNav.html'));
$template_page->pageContet('students.html');
echo $template_page->build_template();
break;
case 'submit':
cannot access $_POST here
break;
default:
header('Location:'.URL.'/404.html') ;
break;
}
这里是 Ajax
$('.navicagtionClass > li > a').click(function() {
var page = $(this).attr('value');
var obj = {};
obj['page'] = page;
$.ajax({
url: "/submit",
type: "POST",
data: obj,
dataType: "json",
success: function(data) {
console.log(data);
document.getElementById('PageContent').innerHTML = data.a;
},
error: function(xhr, status, err) {
console.log(err);
}
});
});
【问题讨论】:
-
试试
print_r(json_decode(file_get_contents('php://input'), 1));。可能是 javascript 将其发送到 PHP 输入流中。