我正在构建一个 AJAX 表单,并尝试通过 JSON 发送 3 个字段。
在客户端,表单被序列化并输入 JSON 格式:
$('#form-signin').live('submit', function(event) {
var target = $('#ajax');
var url = '/ajax/user/authenticateLevel2';
$.ajax({
type: "POST",
url: url,
data: $.base64.encode($('#form-signin').serialize()),
dataType: 'json',
success: function(data, status) {
$.getJSON(url, function(data) {
$('#ajax').html($.base64.decode(data.html));
$('#ajax').modal();
});
}
});
event.preventDefault();
});
服务器端,我的路由器拆分 URL 请求,看到第一部分包含“ajax”,然后继续专门将路由请求传递给 AJAX 处理程序。
我的问题是,即使在路由器内部,检查$_REQUEST
用于获取帖子信息的内容,帖子数据也不存在。也是如此$_POST
。
即使是请求命中的第一页 (index.php),$_REQUEST
也没有数据。
我究竟做错了什么?
服务器端,
请求被发送到包含 Autoloader 和 init 脚本的 index.php。
init 脚本初始化数据库连接,设置错误、异常和会话处理,然后将请求传递到路由器。
路由器,在其构造方法中:将 URL 设置为数组(已分解$_SERVER['REQUEST_URI']
),然后设置相关的控制器、方法和附加参数。
在这种情况下,因为我们正在执行 ajax 请求,所以在我们发送请求之前会发生特殊处理。
方法参数设置为:
$requestParams = $_REQUEST;
unset($requestParams['url']);
此请求参数以及附加信息(url、控制器、方法和数据库对象)被传递以进行调度。
在所有情况下,我们主要使用这种方法进行调度:
$dispatchedController = new $this->controller($this->database);
$method = $this->method;
return $dispatchedController->$method($this->params);