这是我的结构:
router.php,基于$ _POST ['c']生成控制器文件名,包含文件并调用它的$ _POST ['a']方法。
我有一个gridview。当用户单击该行时打开详细信息页面的唯一方法是使用AJAX,因为只有javascript才能处理单击。我不想要一个按钮列 - 我想要一行按钮。
所以我有我的javascript这样做:
$( document ).ready(function() {
// Handler for .ready() called.
$("tr" ).click(function() {
var id = $('td[name=id]').attr('id');
var c = $('input[name=c]').attr('value');
var a = $('input[name=a]').attr('value');
$.post("Router.php", { id: id, c: c, a: a }, function(data){
window.location.href = "Router.php";
});
});
});
我有我的Router.Php:
if (array_key_exists('c', $_POST)) {
$controller = $_POST['c'];
};
if (array_key_exists('a', $_POST)) {
$action = $_POST['a'];
};
echo $controller;
echo $action;
我永远无法获得帖子值。我认为我正在考虑AJAX错误 - AJAX假设要做的只是获取响应并将其呈现在浏览器的某个位置。我正在使用它是传递POST数据并在PHP文件中调用方法。原因是因为我不想在URL中传递id。
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
以下部分代码向服务器发出2个请求。一个POST然后一个GET。
$.post("Router.php", { id: id, c: c, a: a }, function(data){
window.location.href = "Router.php";
});
很可能你在第一次请求时得到了你想要的东西,但你在屏幕上看到的结果是第二个请求的结果,这只是没有参数的GET。
该帖子的结果是使用echo $controller;
和echo $action;
撰写的,这些内容会在(data)
中返回,但您不会对此做任何事情。您只需将客户端重定向到Router.php
。