PC_MAGAS Δημοσ. 10 Ιουνίου 2017 Δημοσ. 10 Ιουνίου 2017 Όπως ρωτό στο https://stackoverflow.com/questions/44473257/meteor-http-call-return-undefined-on-response-after-an-http-response Έχω κάνει ένα php script το οποίο ανεβάζει στο Αzure κάποια αρχεία από ένα base64 που παρέχετε από ένα JSON. (στο link ο κώδικας του script) Προκειμένο να προσωμοιώση την κλήση σε ένα API. Και στο meteor app (ecmascript6 + react) έχω κάνει το εξής: import { Meteor } from 'meteor/meteor'; import { HTTP } from 'meteor/http' export default Meteor.methods({ 'fileStorage.uploadFile'(base64Data,name,mime) { // this.unblock(); let http_obj={ 'data':{ 'data':base64Data, 'name':name, 'mime':mime }, } HTTP.call("POST","http://localhost/base64Upload/",http_obj,function(err,response){ console.log("Error",err); console.log("Response:",response); }); } }); Αλλά το πρόβλημα είναι ότι δεν λαμβάνω το response που μου στέλνει το script ενώ καλείτε κανονικά το script και αποτέλλετεi κανονικά απάντηση. Έχετε καμιά ιδέα γιατί συμβαίνει αυτό;
The King Δημοσ. 11 Ιουνίου 2017 Δημοσ. 11 Ιουνίου 2017 import { Meteor } from 'meteor/meteor'; import { HTTP } from 'meteor/http' export default Meteor.methods({ 'fileStorage.uploadFile'(base64Data,name,mime) { // this.unblock(); let http_obj={ 'data':{ 'data':base64Data, 'name':name, 'mime':mime }, } HTTP.call("POST","http://localhost/base64Upload/",http_obj,function(err,response){ console.log("Error",err); console.log("Response:",response); }); } }); Αρχικά το array σου φαίνεται λάθος γιατί στα JSON δουλεύουν μόνο τα double quotes ενώ δεν έχεις [] για να τα βάλεις μέσα εφόσον είναι πολλά, δεν ισχύει ό,τι στη JavaScript για μονά/διπλά quotes (http://www.json.org/), η σωστή μορφή είναι // ... let http_obj= { "data":[ "data: base64Data", "name:name", "mime:mime" ] }, //.. Μετά βεβαιώσου ότι όντως περνάνε τα δεδομένα που θες στο object σου, βάζοντας αμέσω από κάτω πριν αρχίσει το HTTP.call. Αν δεν περνάνε τότε το πρόβλημα σου βρίσκεται πιο πίσω. console.log(JSON.stringify(http_obj)); Δοκίμασε και εάν δε δουλέψει ξαναστείλε να δούμε μήπως χρειάζεται να το περάσουμε με μετατρέψουμε σε άλλο structure το http_obj ως παράμετρο στο HTTP.call() method.
defacer Δημοσ. 11 Ιουνίου 2017 Δημοσ. 11 Ιουνίου 2017 Αρχικά το array σου φαίνεται λάθος γιατί στα JSON δουλεύουν μόνο τα double quotes Δεν είναι λάθος γιατί δεν είναι JSON, είναι Javascript object literal. JSON θα ήταν αυτό: var json = '{"data": xyz}'; στο οποίο όντως χρειάζεσαι double quotes αν πρόκειται να το κάνεις κάτι. Γενικά το έχεις μπερδεμένο λίγο το θέμα του JSON.
defacer Δημοσ. 12 Ιουνίου 2017 Δημοσ. 12 Ιουνίου 2017 Όχι, λογικά είναι και λάθος να βάλεις ; μέσα στο json. Δεν ξέρω, είναι τόσο "προφανώς λάθος" που δεν το έχω κάνει ποτέ.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα