Magento 2 - 来自 Javascript 的请求返回状态代码 302
Magento 2 - Request from Javascript is returned with Status code 302
我正在通过 XMLHttpRequest 发送一个带有数据的 POST 请求。我得到的响应确实有状态代码 302。
Javascript函数:
function createCSV() {
let xhttp = new XMLHttpRequest();
xhttp.open("POST", '', false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(JSON.stringify(formDataObject));}
回复:
Request URL: http://localhost:8888/magento2/delivery/inputform/national
Request Method: POST
Status Code: 302 Found
Remote Address: [::1]:8888
Referrer Policy: no-referrer-when-downgrade
布局
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<!--Include CSS-->
<css src="Magento_VersandForm::css/inputform.css" />
<script src="Magento_VersandForm::js/inputform.js"/>
<script src="Magento_VersandForm::js/w3.js"/>
</head>
<body>
<referenceContainer name="content">
<block class="Magento\VersandForm\Block\Send" name="Inputform_send" template="Magento_VersandForm::national_input.phtml" />
</referenceContainer>
</body>
</page>
这是我的街区
<?php
namespace Magento\VersandForm\Block;
class Send extends \Magento\Framework\View\Element\Template
{
public function
__construct(\Magento\Framework\View\Element\Template\Context
$context)
{
parent::__construct($context);
}
/**
* Returns description for Tooltip
* @return string
*/
public function getRequiredFieldsDescription(){
return 'Diese Felder müssen ausgefüllt sein';
}
}
这是我的控制器
<?php
namespace Magento\VersandForm\Controller\Inputform;
use Magento\Framework\Controller\ResultFactory;
class National extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
/**
* Booking action
*
* @return void
*/
public function execute()
{
// 1. POST request : Get Data From Javascript
$post = (array) $this->getRequest()->getPost();
}
}
为什么 Magento 要重定向我。如果您遇到过此类错误,请提供信息。
找到解决方案:
问题不在控制器中。问题是我用 Javascript 发送的请求。似乎 Magento 需要 Header“X-Requested-With: XMLHttpRequest”。所以只需将它添加到您的请求
function createCSV() {
let xhttp = new XMLHttpRequest();
xhttp.open("POST", '', false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhttp.send(JSON.stringify(formDataObject));}
我正在通过 XMLHttpRequest 发送一个带有数据的 POST 请求。我得到的响应确实有状态代码 302。
Javascript函数:
function createCSV() {
let xhttp = new XMLHttpRequest();
xhttp.open("POST", '', false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(JSON.stringify(formDataObject));}
回复:
Request URL: http://localhost:8888/magento2/delivery/inputform/national
Request Method: POST
Status Code: 302 Found
Remote Address: [::1]:8888
Referrer Policy: no-referrer-when-downgrade
布局
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<!--Include CSS-->
<css src="Magento_VersandForm::css/inputform.css" />
<script src="Magento_VersandForm::js/inputform.js"/>
<script src="Magento_VersandForm::js/w3.js"/>
</head>
<body>
<referenceContainer name="content">
<block class="Magento\VersandForm\Block\Send" name="Inputform_send" template="Magento_VersandForm::national_input.phtml" />
</referenceContainer>
</body>
</page>
这是我的街区
<?php
namespace Magento\VersandForm\Block;
class Send extends \Magento\Framework\View\Element\Template
{
public function
__construct(\Magento\Framework\View\Element\Template\Context
$context)
{
parent::__construct($context);
}
/**
* Returns description for Tooltip
* @return string
*/
public function getRequiredFieldsDescription(){
return 'Diese Felder müssen ausgefüllt sein';
}
}
这是我的控制器
<?php
namespace Magento\VersandForm\Controller\Inputform;
use Magento\Framework\Controller\ResultFactory;
class National extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
/**
* Booking action
*
* @return void
*/
public function execute()
{
// 1. POST request : Get Data From Javascript
$post = (array) $this->getRequest()->getPost();
}
}
为什么 Magento 要重定向我。如果您遇到过此类错误,请提供信息。
找到解决方案:
问题不在控制器中。问题是我用 Javascript 发送的请求。似乎 Magento 需要 Header“X-Requested-With: XMLHttpRequest”。所以只需将它添加到您的请求
function createCSV() {
let xhttp = new XMLHttpRequest();
xhttp.open("POST", '', false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhttp.send(JSON.stringify(formDataObject));}