微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – 获取控制器内的环境

我的一个控制器中只有通过 AJAX访问的情况,我有以下代码.
if (!$request->isXmlHttpRequest()) {
    $response = new Response();
    $response->setContent('AJAX requests only!');
    return $response;
}

当我测试时,这给了我一个问题,因为该请求实际上并未通过AJAX进行.这样每次都会破坏我的测试.我该如何解决这个问题呢?

我的想法:

>我试图设置服务器标头,但绝对没有成功.
>检查我是否在控制器的测试环境中,如果是,则不进行检查.我知道这很脏,但它会起作用. : – /问题是我无法弄清楚如何发现我所处的环境.

其他人有任何其他想法或提示,我错过了上述工作之一吗?

查看类ServerBag中的请求和方法getHeaders中的isXmlHttpRequest代码,下面的代码应该可以解决这个问题:
$client->request(
    'GET','/path/to/test',array(),array(
        'HTTP_X-Requested-With' => 'XMLHttpRequest',)
);

我没有亲自测试,但我认为它应该有效. Request中的代码行用于检查http请求是否是XmlHttpRequest.

return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');

代码中,使用以下命令设置$this->标头:

$this->headers = new HeaderBag($this->server->getHeaders());

getHeaders方法创建一个标头数组.每个以HTTP_开头的服务器变量加上一些特殊的服务器变量(如CONTENT_TYPE)都放在此数组中.

希望这可以帮助.

问候,马特

原文地址:https://www.jb51.cc/ajax/159858.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐