繁体   English   中英

PHP CI无法看到发布变量

[英]PHP CI Can't See Post Variable

这非常令人沮丧! 我试图将一个简单的Ajax帖子发送到本地Web应用程序,并且参数为空。 为了调试它,我打开了提琴手,但结果却一样!

我有这个控制器

class Site extends CI_Controller {

public function __construct() {
    parent::__construct();

} //etc

有了这个功能

    public function hello() {
    var_dump($_SERVER['REQUEST_METHOD']);
    var_dump($_SERVER['REQUEST_URI']);
    $hello = $this->input->post("hello");
    echo "hello is $hello";
}

现在,我尝试在Fiddler中对此进行测试,然后转到Composer,选择一个新的Post请求并将其放入正文hello = wtsgppp。

这是fiddler中hello函数的结果:

string(4) "POST"
string(25) "/cmd/index.php/site/hello"
hello is 

如您所见,hello是空的。 任何帮助,万分感谢!

使事情更烦人的是-一旦我将提琴手中的http请求更改为GET并在url字符串中添加问候(并将控制器更改为echo get而不是post),它就起作用了! 那么为什么要上班却不能上班呢?

除非PHP在标头中看到已知的内容类型,否则不会填充$_POST数组。

在您的Fiddle请求中,尝试添加以下HTTP标头:

Content-Type: application/x-www-form-urlencoded

这是因为PHP解码原始POST正文并将其注入$_POST变量(CI所查看的内容)的方式取决于将请求发送到服务器的方式。

编辑 :如果您也没有在XHR / AJAX帖子中看到它,请确保同时设置了Content-Type标头。 jQuery(和大多数JS库)将自动为您执行此操作,但是如果您不使用库,则必须自己完成操作:

request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

您的input标签是否具有名称属性?

我应该是<input type="text" name='hello'></input>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM