के माध्यम से php अपवाद फेंकने का क्लीन तरीका क्या एक जेसन प्रतिक्रिया jquery/AJAX कॉल के माध्यम से php अपवादों को फेंकने का एक साफ, आसान तरीका है।jquery/AJAX और json
उत्तर
आप PHP में कुछ इस तरह (इस AJAX के माध्यम से बुलाया जाता है यह मानते हुए कि) कर सकता है:
<?php
try {
if (some_bad_condition) {
throw new Exception('Test error', 123);
}
echo json_encode(array(
'result' => 'vanilla!',
));
} catch (Exception $e) {
echo json_encode(array(
'error' => array(
'msg' => $e->getMessage(),
'code' => $e->getCode(),
),
));
}
जावास्क्रिप्ट में:
$.ajax({
// ...
success: function(data) {
if (data.error) {
// handle the error
throw data.error.msg;
}
alert(data.result);
}
});
तुम भी $ .ajax की error:
हैंडलर (ट्रिगर कर सकते हैं) 400 लौटने (उदाहरण के लिए) शीर्षलेख:
header('HTTP/1.0 400 Bad error');
या Status:
का उपयोग करें अगर आप फास्टसीजीआई पर हैं। ध्यान दें कि error:
हैंडलर को त्रुटि विवरण प्राप्त नहीं होता है; यह पूरा करने के लिए कि आपको $.ajax()
कैसे काम करता है :)
फेसबुक अपने PHP एसडीके में कुछ करता है, जहां किसी भी कारण से HTTP अनुरोध विफल हो जाता है, तो वे अपवाद फेंक देते हैं। आप इस दृष्टिकोण ले सकता है, और अगर एक अपवाद फेंक दिया जाता है सिर्फ त्रुटि और अपवाद विवरण वापसी:
<?php
header('Content-Type: application/json');
try {
// something; result successful
echo json_encode(array(
'results' => $results
));
}
catch (Exception $e) {
echo json_encode(array(
'error' => array(
'code' => $e->getCode(),
'message' => $e->getMessage()
)
));
}
फिर आप सिर्फ अपने AJAX में error
कुंजी के लिए सुन सकते हैं जावास्क्रिप्ट में कॉल:
<script>
$.getJSON('http://example.com/some_endpoint.php', function(response) {
if (response.error) {
// an error occurred
}
else {
$.each(response.results, function(i, result) {
// do something with each result
});
}
});
</script>
यदि सभी त्रुटियों का एक ही तरीके से व्यवहार किया जाना चाहिए (उदाहरण के लिए एक संवाद दिखा रहा है)।
पीएचपी अंत::
public function throwJsonException($msg) {
echo json_encode(array('error'=> true, 'msg' => $msg));
}
throwJsonException('login invalid!');
jQuery अंत: आप इसे इस तरह से कर सकते हैं
$(document).ajaxSuccess(function(evt, request, settings){
var data=request.responseText;
if (data.length>0) {
var resp=$.parseJSON(data);
if (resp.error)
{
showDialog(resp.msg);
return;
}
}
});
पिछले जवाब के लिए एक पूरक के रूप में, बजाय में json एन्कोडिंग के लिए एक ही कोड दोहराने की आपके सभी अपवाद, आप केवल एक आवश्यक स्क्रिप्ट में उपयोग करने के लिए एक अपवाद हैंडलर सेट कर सकते हैं। उदाहरण के लिए:
function ajaxExceptionHandler($e) {
echo json_encode(array(
'error' => array(
'code' => $e->getCode(),
'msg' => $e->getMessage())
));
}
फिर, अपने ajax हैंडलर में,
set_exception_handler('ajaxExceptionHandler');
- 1. JSON diff, कुछ JSON एक और JSON
- 2. JSON ई और JSON E
- 3. JSON अनुरोध और RestSharp
- 4. JQuery और JSON तत्व
- 5. स्थानीय भंडारण और JSON
- 6. AJAX/JSON और PHP
- 7. urllib2 और json
- 8. JSON और ASP.NET MVC
- 9. iPhone, JSON और संपीड़न
- 10. JSON.NET और JSON कनवर्टर
- 11. जावास्क्रिप्ट और JSON सरणी
- 12. php और json
- 13. आरईएसटी और JSON
- 14. JSON और jQuery.ajax
- 15. jQuery, अजाक्स और JSON
- 16. जावास्क्रिप्ट और JSON
- 17. JSON संरचना और jQuery
- 18. JSON और jQuery
- 19. बेस 64 और JSON
- 20. jQuery, JSON, PHP और gMap
- 21. JSON और अक्षर से बचने
- 22. "गतिशील" कीवर्ड और JSON डेटा
- 23. जावास्क्रिप्ट ऑब्जेक्ट और JSON ऑब्जेक्ट
- 24. डिकोड json और Django टेम्पलेट
- 25. सिलेक्स और phpunit JSON प्रतिक्रिया
- 26. JSON JSON ट्रांसफॉर्मर
- 27. JSON, jQuery और AJAX और जावा
- 28. JSON
- 29. JSON
- 30. JSON
क्यों आप एक अपवाद फेंक करना चाहते हैं? यह एक त्रुटि स्थिति को वापस करने के लिए बेहतर होगा जो अपवाद को ट्रिगर नहीं करता है। – doublesharp
मेरा मतलब है कि मैंने सर्वर की तरफ पकड़ने की कोशिश की है, और मैं त्रुटि संदेश को जेसन प्रतिक्रिया में रखना चाहता हूं। – madphp