2012-09-12 17 views
7

के भीतर अजाक्स में त्रुटियों को संभाल लें मैं अजाक्स में त्रुटियों को संभालने की कोशिश कर रहा हूं। इसके लिए, मैं बस सिम्फनी में इस SO question को पुन: उत्पन्न करने की कोशिश कर रहा हूं।सिम्फनी 2 नियंत्रक

$.ajaxSetup({ 
    error: function(xhr){ 
     alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText); 
    } 
}); 

लेकिन मैं समझ नहीं क्या नियंत्रक में कोड header('HTTP/1.0 419 Custom Error'); को गति प्रदान करने Symfony2 में कैसा दिखेगा। क्या इसके साथ एक व्यक्तिगत संदेश संलग्न करना संभव है, उदाहरण के लिए You are not allowed to delete this post। क्या मुझे JSON प्रतिक्रिया भी भेजनी है?

यदि कोई इससे परिचित है, तो मैं वास्तव में आपकी मदद की सराहना करता हूं।

बहुत धन्यवाद

उत्तर

12

अपनी कार्रवाई में आप एक Symfony\Component\HttpFoundation\Response वस्तु लौट सकते हैं और आप setStatusCode विधि या HTTP स्थिति कोड स्थापित करने के लिए दूसरे निर्माता तर्क का उपयोग कर सकते हैं या तो। बेशक अगर भी संभव है JSON (या एक्सएमएल) के रूप में प्रतिक्रिया की सामग्री वापस जाने के लिए अगर आप चाहते हैं करने के लिए:

public function ajaxAction() 
{ 
    $content = json_encode(array('message' => 'You are not allowed to delete this post')); 
    return new Response($content, 419); 
} 

या

public function ajaxAction() 
{ 
    $response = new Response(); 
    $response->setContent(json_encode(array('message' => 'You are not allowed to delete this post')); 
    $response->setStatusCode(419); 
    return $response; 
} 

अद्यतन: आप Symfony उपयोग कर रहे हैं 2.1 आप Symfony\Component\HttpFoundation\JsonResponse का एक उदाहरण वापस कर सकते हैं (संकेत के लिए catcatheflat के लिए धन्यवाद)। इस वर्ग का उपयोग करने का लाभ यह है कि यह सही Content-type शीर्षलेख भी भेजेगा। उदाहरण के लिए: Symfony 2.1 में

public function ajaxAction() 
{ 
    return new JsonResponse(array('message' => ''), 419); 
} 
+3

AFAIK आप लौट सकते हैं 'JsonResponse()' –

+0

संकेत के लिए धन्यवाद। मैंने अपना जवाब अपडेट किया। –