zynif Δημοσ. 11 Οκτωβρίου 2015 Δημοσ. 11 Οκτωβρίου 2015 (επεξεργασμένο) Καλημέρα Ασχολούμαι τον τελευταίο καιρό με Symfony2 και θέλω να κάνω ένα ajax post Έχω τα παρακάτω αρχεία $(document).ready(function($) { $('#fastReply').click(function () { var msg = $('#txtReply').val(); var threadid = $('#AjaxReplyDiv').find('#threadid').html(); $.ajax({ type: 'post', url: "fastreply", data: '&tid=' + threadid + '&msg='+ msg, success: function (res) { alert('OK' + res['data'] ); }, error: function (res) { alert('ERROR ' + res['data']); }, }); }); }); <?php namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class AjaxReplyController extends Controller { /** * @Route("fastreply") */ public function ajaxAction(Request $req) { try { $threadid = $req->query->get('tid'); $msg = $req->query->get('msg'); $response = new Response(); $response->setContent(json_encode(array( 'data' => $threadid, ))); $response->headers->set('Content-Type', 'application/json'); return $response; } catch (Exception $ex) { return new JsonResponse(array('data' => 'this is a error json response')); } } } το οποίο όμως δεν λειτουργεί . Μου βγάζει undefined. Επεξ/σία 11 Οκτωβρίου 2015 από zynif
Ilias95 Δημοσ. 11 Οκτωβρίου 2015 Δημοσ. 11 Οκτωβρίου 2015 Που σου βγάζει undefined;Τα data είσαι σίγουρος ότι γίνεται να τα περάσεις έτσι;Κανονικά απ' όσο ξέρω τα περνάς σε ένα js object: data: {id : $threadid, msg : $msg}
zynif Δημοσ. 11 Οκτωβρίου 2015 Μέλος Δημοσ. 11 Οκτωβρίου 2015 Στο alertbox που του χω πει να μου βγάζει στο success/error. Δεν θα 'πρεπε να μου επιστρέφει και το $threadid;
Ilias95 Δημοσ. 11 Οκτωβρίου 2015 Δημοσ. 11 Οκτωβρίου 2015 Στο success ή στο error γίνεται αυτό;Όταν έχεις error δεν είναι απαραίτητο ότι θα πάρεις τα data που περιμένεις.
defacer Δημοσ. 11 Οκτωβρίου 2015 Δημοσ. 11 Οκτωβρίου 2015 Έχει πολλά περίεργα ο κώδικας που δίνεις, το ένα είναι αυτό που είπε ο Ηλίας (ισχύει και όπως το έχεις φαινομενικά αλλά είναι απλά χειρότερο και buggy, άσχετα που δε θα πετύχεις το συγκεκριμένο bug στην πράξη). Το άλλο είναι ότι στη μία γυρνάς manually Response, γιατί όχι κατευθείαν JsonResponse όπως στο error? Και τέλος, ο error handler στη JS δεν υπάρχει περίπτωση να παίξει σωστά γιατί όπως φαίνεται καθαρά στην PHP δε στέλνεις JSON σε περίπτωση HTTP 4xx/5xx (και ακόμα κι αν έστελνες, το jQuery δεν το κάνει parse μόνο του οπότε το res['data'] πάλι δε θα έπιανε μανίσια). Επίσης, γιατί res['data'] και όχι το πιο φυσικό res.data? Τώρα, το λάθος που σίγουρα έχεις και στο χαλάει είναι ότι κάνεις POST, βάζεις τα δεδομένα στο request body (όχι στο query string) και μετά περιμένεις να τα βρεις στο $request->query (που διαβάζει από το query string). Συμβουλή: μάθε να χρησιμοποιείς τα developer tools του browser και το xdebug για την PHP γιατί ρωτώντας μόνο θα πας στην πόλη πολύ αργοπορημένος.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα