2016-12-28 14 views
1

Я хочу отправить некоторые данные в php-скрипт с использованием redux и promise, как если бы следующее.PHP Script не может получить данные из запроса axios в функции действия Redux

export function fetchFileContent() { 
    return { 
     type: "FETCH_FILECONTENT", 
     payload: axios.post("/api/ide/read-file.php", { 
      filePath: document.getArgByIndex(0)[0] 
     }) 
    }; 
} 

Но сценарий php не может получить данные. Когда я печатаю все данные в $_POST с использованием var_dump. Внутри нет ничего.

Я проверил Запросить полезную нагрузку в инструменте отладки Google Chrome и, похоже, это не проблема. enter image description here

В моем PHP скрипт:

if (isset($_POST["filePath"])) 
    echo "yes"; 
else 
    echo "no"; 
echo "I am the correct file"; 
var_dump($_POST["filePath"]); 

$dir = $_POST['filePath']; 
echo $_POST['filePath']; 

И я получил такой ответ:

noI am the correct file<br /> 
<b>Notice</b>: Undefined index: filePath in <b>/var/www/html/api/ide/read-file.php</b> on line <b>7</b><br /> 
NULL 
<br /> 
<b>Notice</b>: Undefined index: filePath in <b>/var/www/html/api/ide/read-file.php</b> on line <b>9</b><br /> 
<br /> 
<b>Notice</b>: Undefined index: filePath in <b>/var/www/html/api/ide/read-file.php</b> on line <b>10</b><br /> 

Как я могу получить обратно данные в PHP скрипт?

+0

Вы определенно проверяете правильный файл php? Если вы видите, что он отправляется на вашу сетевую вкладку, нет никаких причин, по которым его не следует отправлять. –

+0

@RossWilson - Если я изменяю скрипт, добавляя 'if (isset ($ _ POST [" filePath "])) echo" yes "; else echo "no"; ', я вижу' no'. Если я добавлю «echo», я верный файл «;», я также могу увидеть его в ответе. – Casper

+0

Когда вы делаете 'var_dump ($ _ POST);', что вы видите? Похоже, что axios отправляет объект JSON, поэтому вам может понадобиться запустить json_decode в вашем массиве $ _POST. –

ответ

6

Спасибо Мэтту Altepeter и его комментарий, я, наконец, решил, добавив строку:

$_POST = json_decode(file_get_contents('php://input'), true); 

Так что, если я делаю var_dump($_POST) сейчас, я могу получить данные filePath.

array(1) { 
    ["filePath"]=> 
    string(10) "/I am here" 
}