使用单点条目 PHP 时定义 $_POST 变量

Posted

技术标签:

【中文标题】使用单点条目 PHP 时定义 $_POST 变量【英文标题】:Defining $_POST variable when using single point entry PHP 【发布时间】: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 输入流中。 【参考方案1】:

如果我正确理解您的方法,您不能将您所在的页面用作 AJAX 处理器文件。您需要一个单独的 PHP 文件来处理 AJAX 并将其返回给 index.php。

在下面引用的源代码中,请特别注意前缀为 “试试这个,你会明白我的意思”的示例——试一试。

来源:

values not updated after an ajax response

【讨论】:

谢谢我试一试,如果有效,我会接受这个作为正确答案

以上是关于使用单点条目 PHP 时定义 $_POST 变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP表单-PHP $_POST 变量

php超级全局变量

PHP 预定义变量

PHP中的$_POST

PHP邮件不断给我未定义的索引,帮助?

php$_POST 变量