2017-02-18 4 views
3

Ich benutze axios.post aber der Server scheint nicht die Post-Daten zu erhalten.Axios Post Server empfängt keine Daten vom Browser

Das ist, was ich habe:

var baseURL = "http://localhost:8888/dbRouting.php"; 
var body = { 
    function: 'foo', 
    id: 'bar', 
} 

axios.post(baseURL, body) 
.then((response) => { console.log("Data Loaded AXIOS: " + response.data); }) 
.catch(function (error) {console.log(error);}); 

// Data Loaded AXIOS: array(0) { 
// } 

Dieser jQuery Beitrag auf die gleiche Datei, auf der anderen Seite funktioniert:

$.post(baseURL, body) 
    .done(function(data) { 
    console.log("Data Loaded JQUERY: " + data); 
    }); 

//Data Loaded JQUERY: array(2) { 
//["function"]=> 
//string(3) "foo" 
//["id"]=> 
//string(3) "bar" 
//} 

Die Server-Datei (dbRouting.php) ist einfach:

<?php 
var_dump($_POST); 
?> 

Irgendwelche Ideen, was passieren könnte?

Antwort

0

Es scheint ein Netzwerkproblem. Überprüfen Sie die URL und den Port localhost: 8888/dbRouting.php auf JQuery & Axios Demo Sind sie genau das gleiche? Wird Ihr .catch auf Axios abgefeuert? Was ist der Fehler? reagiert Ihr Server auf localhost: 8888?

Alternativ können Sie Ihre Server-Implementierung überprüfen einen anderen Client (z.B. Postman https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en)

+1

URL und Port doppelt geprüft zu helfen ist. Auf die php-Datei wird in beiden Fällen zugegriffen. axios funktioniert einwandfrei (keine Fehler geworfen) und 'then' wird ausgelöst. Es ist nur so, dass die PHP-Datei keine Daten aus dem Post-Call von Axios erhält. Alles andere funktioniert tiptop. – gondolfier

+0

Ich habe das gleiche Problem auch –

1

Das ist mein Weg, um die Back-End ermöglicht die PHP zu verarbeiten _POST über $ ist. Dies ist Teil meines Code in vue inside method section.

Angenommen, Sie sind per Post an einen POST_URL und Sie haben ein Objekt, var myObject:

var myObject = { 
    property: value, 
    property1: value1, 
    property2: value2 
} 

Inside my vue, Verfahrensabschnitt:

updateForm: function(myObject){ 
      var post_url = (your post url); 

      axios.post(post_url, makePostReady(myObject)) 
      .then(function (response) { 
       console.log(response); 
      }) 
      .catch(function (error) { 
       console.log(error); 
      }); 
     } 

Dann oben (vor axios Post-Aufruf) oder mache es zu einer globalen Funktion. Ich habe unten Funktion jedes Objekt drehen Ich möchte als Beitrag senden axios verwenden, so dass es

property=value&poperty1=value1&property2=value2...... 

unten stehende Formular wird die Funktion ist:

function makePostReady(object) 
{ 
    var sentence = ""; 
    for (var key in object) { 
     sentenceAdd = key + '=' + object[key] + '&'; 
     sentence = sentence + sentenceAdd; 
    } 
    //console.log('sentence: ' + sentence); 
    return sentence; 
} 

Danach können Sie var_dump können ($ _POST) bei Dein post_url um zu überprüfen, ob alles in Ordnung ist. Dann können Sie die Daten wie gewohnt verarbeiten.

Hoffentlich hilft es

Im Folgenden einige Bild besser zu verstehen

enter image description here

enter image description here