AJAX转移页面PHP

时间:2013-11-17 08:27:49

标签: javascript php ajax web

这是我的结构:

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。

有什么方法可以解决这个问题吗?

1 个答案:

答案 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