ALLisCHAOS Δημοσ. 19 Μαρτίου 2015 Δημοσ. 19 Μαρτίου 2015 (επεξεργασμένο) Εχω εναν πίνακα με μεταβλητές και θέλω να τον περάσω μέσω Ajax σε ένα php αρχείο(στο server) Με τον παρακάτω κωδικα προσπαθώ να εμφανίσω τον πίνακα αλλά δεν τα καταφέρνω :/ <html> <head> </head> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript" charset="utf-8"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> <script> dataString = ['game1','game2','game3','game4']; var jsonString = JSON.stringify(dataString); $.ajax({ type: "POST", url: "theAjax.php", data: {data : jsonString}, cache: false, success: function(){ alert("OK"); } }); </script> <!-- theAjax.php file --> <?php if(isset($_POST['data'])){ $data = json_decode(stripslashes($_POST['data'])); foreach($data as $d){ echo $d; } }else echo "NOT SET"; ?> </body> </html> To theAjax.php αρχείο είναι το παραπάνω. Οταν ανοίξω λοιπόν τη σελίδα πέρνω το alert(OK) απο την success αλλά στη συνέχεια μου εμφανίζει NOT SET. Γιατί δεν γίνεται SET η _POST['data']? Επεξ/σία 20 Μαρτίου 2015 από ALLisCHAOS
defacer Δημοσ. 19 Μαρτίου 2015 Δημοσ. 19 Μαρτίου 2015 Όλα αυτά που πόσταρες είναι το ίδιο αρχείο; Τότε προφανώς θα γράψει "NOT SET", αφού πριν εκτελέσει ο browser την javascript θα πρέπει να έχει το περιεχόμενο στα χέρια του, και για να έχει το περιεχόμενο πρέπει να τρέξει η PHP, η οποία προφανώς δεν πρόκειται να βρει τίποτα στο $_POST γιατί είμαστε χρονικά πολύ πριν το σημείο όπου θα αρχίσουμε να σκεφτόμαστε για ajax request. Επίσης, δε χρειάζεται (και άρα είναι σχεδόν σίγουρα "λάθος") να στείλεις τα δεδομένα σα JSON. Και το stripslashes πέραν του ότι δε χρειάζεται στην προκειμένη περίπτωση είναι λάθος (με την έννοια ότι μπορεί να κάνει μόνο κακό).
Noobie Δημοσ. 19 Μαρτίου 2015 Δημοσ. 19 Μαρτίου 2015 Γίνεται set η POST['data'] και επιστρέφει και το αποτέλεσμα, απλά το response είναι στο POST request που έχει κάνει η Javascript και όχι στο GET request που κάνει αρχικά ο browser. Δηλαδή αν αλλάξεις αυτό: success: function(){ alert("OK"); } Σε αυτό: success: function(responsedata){ alert(responsedata); } Θα δεις το response.
ALLisCHAOS Δημοσ. 20 Μαρτίου 2015 Μέλος Δημοσ. 20 Μαρτίου 2015 @defacer οχι κανονικά δεν είναι στο ίδιο αρχείο...το JQ script ειναι στον client και θέλω ο πίνακας να σταλεί στο server (php script), θα δοκιμάσω να βγάλω το json... @Noobie οκ, βλέπω το response αλλά στην ουσία θέλω να σταλούν στο server και να τα δω απο κει...
libereas Δημοσ. 20 Μαρτίου 2015 Δημοσ. 20 Μαρτίου 2015 για δοκίμασε κάτι τέτοιο <html> <head> </head> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript" charset="utf-8"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> <script> var dataString = ["game1","game2","game3","game4"]; jQuery.post("theAjax.php", {json: JSON.stringify(dataString)}, function(data){ alert(data); }); </script> </body> </html> και το php σου <?php if(isset($_POST['json'])){ $data = json_decode($_POST['json']); foreach ($data as $value){ echo "".$value." \n"; } }else { echo "NOT SET"; } ?>
ALLisCHAOS Δημοσ. 20 Μαρτίου 2015 Μέλος Δημοσ. 20 Μαρτίου 2015 @Noobie τελικά αυτό που είπες αρχικά ήταν, λίγο η ώρα χθες λίγο η κούραση νόμιζα πως άλλο έκανε.. μόλις τώρα το κατάλαβαThanks και τον @libereas που αυτός είναι ο τελικός κώδικας! 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα