2017-01-04 5 views
2

私はこの質問を以前に頼んだので答えを得ることができませんでした。私は使用方法を行うことができました:それを働かせるために以下のように「得る」は大丈夫でしたが、今度は投稿を使用する必要があります。別のプロジェクト(react、redux、php、webpack、xamppを使用)では、同じ問題が再現されており、私はそれを理解しようとしています。だからここにある:axios httpは常に空のデータで返されます

register.php

echo $_GET['task']; 

index.js

const values = {task: 'doSomething', username: 'username'} 
    axios({ 
     url: "./server/register.php", 
     timeout: 20000, 
     method: 'get', 
     params: values 
    }).then(function(response){console.log(response.data)}) 

私が行うと上記のすべてが大丈夫ですと、データがdoSomethingの「とログアウトされます'しかし、私はAxios({method: 'POST'})を使用してPHPを$ _POST ['task']に変更しようとすると、$ _POST ['task']が次のように定義されていないというエラーが表示されます:

index.js

axios({ 
     url: "/projects/myProject/server/register.php", 
     method: 'post', 
     data: values 
    }).then(function(response){console.log(response.data)}) 

register.php

echo $_POST['task']; 

お知らせ:未定義のインデックス:タスク

また、axios.post()を使用してこれを試しても、まったく同じ問題が発生します。私はここで投稿リクエストを使いたい。誰も私のためにこれについていくつかの光を当てることができますか?

答えて

4

私の頭を傷つけるかなりの量の後、私は答えを見つけました。 PHPでこの行は、私はすべてのPOSTデータにアクセスする前に追加する必要があります。

$_POST = json_decode(file_get_contents('php://input'), true); 
echo $_POST['task']; 

私の理解からaxiosから入力されたデータは、JSONはそう、我々は(のfile_get_contentsを使用してJSONエンコードされた文字列でそれを返す必要があります)と、これをjson_decodeを使ってJSONでエンコードされた文字列からphp変数に変換します。これが他の人に役立つことを願っていますありがとうございました。

1

あなたのURLの形式が正しくありません。これはURLではないパスです。 Webサーバーでこのファイルをどのように提供するかによって、相対URL(/register.php)または絶対URL(http://localhost/register.php)を使用する必要があります。

+0

私は両方の方法を試してみましたが、これを含めるように質問を更新しました。残念ながら、私はまだ同じエラーが発生しています。未定義。 – Niall

+0

あなたはあなたのregister.phpを正しく扱うWebサーバーを持っていますか? – devside

+0

ありがとうございます。ご協力いただきありがとうございます。私は問題を見つけた後、上記の答えを加えました。 – Niall