【发布时间】:2012-12-24 15:40:12
【问题描述】:
我正在构建一个 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);
【问题讨论】:
标签: php javascript jquery ajax json