Προς το περιεχόμενο

Ajax + Symfony2


Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλημέρα

Ασχολούμαι τον τελευταίο καιρό με 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.

Επεξ/σία από zynif
Δημοσ.

Που σου βγάζει undefined;

Τα data είσαι σίγουρος ότι γίνεται να τα περάσεις έτσι;
Κανονικά απ' όσο ξέρω τα περνάς σε ένα js object:

data: {id : $threadid, msg : $msg}
Δημοσ.

Στο alertbox που του χω πει να μου βγάζει στο success/error. Δεν θα 'πρεπε να μου επιστρέφει και το $threadid;

Δημοσ.

Έχει πολλά περίεργα ο κώδικας που δίνεις, το ένα είναι αυτό που είπε ο Ηλίας (ισχύει και όπως το έχεις φαινομενικά αλλά είναι απλά χειρότερο και 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 γιατί ρωτώντας μόνο θα πας στην πόλη πολύ αργοπορημένος.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...