У меня есть HTML-страница, которая отправляет вызов JQuery Ajax на страницу PHP и ожидает ответа JSON.Если PHP имеет ошибку синтаксического анализатора, ошибка возвращается к вызову, но не в формате JSON, поэтому в конечном итоге выдается ошибка «JSON.parse: неожиданный символ» на стороне Ajax.
Есть лиспособ заставить PHP отправить сообщение об ошибке обратно в формате JSON?(Да, он отправляет сообщение об ошибке в файл event.log в каталоге PHP-файла, но я бы предпочел не перепрыгивать через циклы доступа к нему каждый раз, когда возникает проблема со сценарием.)
Редактировать:Кто-то спросил код - я имею в виду, что-то вроде этого:
Во-первых, «плохой» PHP-скрипт, oops.php:
<?php
$x = "There's no terminating semicolon"
echo json_encode($x);
?>
Теперь HTML-страница, которая вызываетit, oops.html:
<html>
<head><title>OOPS</title></head>
<body>
<div id="text_goes_here"></div>
</body>
<script>
var $outputText = "Text goes here";
$.ajax({
url:"oops.php",
type:"GET",
data: {},
success:function(data) {
outputText = "Success:<br />";
for (var d in data) {
outputText += (data[d] + "<br />");
}
document.getElementById("text_goes_here").innerHTML = outputText;
},
error:function(xhr, status, message) {
outputText = "Error:<br />";
+ "Status: " + status + "<br />"
+ "Message: " + message + <br />";
document.getElementById("text_goes_here").innerHTML = outputText;
},
dataType:"json"
});
</script>
</html>
Проблема заключается в том, что PHP возвращает сообщение об ошибке, но не в формате JSON, поэтому анализатор JSON вызова .ajax не понимает, что это такое, ивыдает ошибку самостоятельно.Я хочу иметь возможность передать ошибку сценария, сгенерированную сценарием PHP, обратно в вызов в формате, который вызов может прочитать.