php - 通过 jquery/ajax 和 json 抛出 php 异常的干净方法

标签 php jquery

有没有一种干净、简单的方法可以通过 json 响应 jquery/ajax 调用抛出 php 异常。

最佳答案

你可以在 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(),
        ),
    ));
}

在 JavaScript 中:

$.ajax({
    // ...
    success: function(data) {
        if (data.error) {
            // handle the error
            throw data.error.msg;
        }
        alert(data.result);
    }
});

您还可以通过返回 400(例如) header 来触发 $.ajax() 的 error: 处理程序:

header('HTTP/1.0 400 Bad error');

如果您使用的是 FastCGI,请使用 Status:。请注意,error: 处理程序不会收到错误详细信息;要实现这一点,您必须重写 $.ajax() 的工作方式:)

关于php - 通过 jquery/ajax 和 json 抛出 php 异常的干净方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693423/

相关文章:

PHP 时间困境

javascript - 在单独的函数中使用来自两个句柄的 jquery-ui 范围 slider 的值

javascript - 暂停 for 循环

javascript - 将可编辑的文本框添加到图表中的特定数据点

javascript - 如何在 JSON 中获取随机值

jquery - 手动将 jquery 和 jquery-ui 添加到 grails 项目

php - 使用 PHP 交叉编译的 THTTPD 服务器运行良好,但没有 PHP

php - PHP上传文件时偏移类型非法

mysql - Nginx CodeIgniter 不工作

javascript - 从 html 表单调用带参数的 JavaScript 函数