通过PHP中的AJAX回显数据

时间:2015-05-10 08:40:48

标签: php ajax json

我刚开始用PHP编码。我以前在asp.net工作过。在do net webmethod中,您可以将数据整齐地返回给AJAX调用。试用PHP我发现你最多只能echo你想要返回的数据。

如果我在服务器上将数据转换为JSON然后返回,则不确定PHP是否会将错误消息编码到其中。这会在客户端代码中创建无效的JSON,并且无法解析结果。

所以我想知道是否有一些先进的功能,即使出现错误,我也可以从服务器上整齐地返回?

澄清:首先发生错误时,无法从JSON对客户端进行解码。实际上这就是问题。

2 个答案:

答案 0 :(得分:1)

这个问题的基础似乎是服务器上的未处理异常,这将使用无效字符串扰乱您的JSON输出(或者,如果错误报告被关闭,JSON输出将是未完成的,并且因此仍然无效)。

考虑这个AJAX代码:

function getPost()
{
    return riskyOperation(); // throws \PDOException
}

echo json_encode(getPost());

这显然会在发生数据库错误时导致问题。要修复它,你可以这样做:

function getPost()
{
    try
    {
        $post = riskyOperation(); // throws \PDOException
    }
    catch (\PDOException $e)
    {
        // @todo Log the exception here
        $post = ['error' => 'A database error occurred', ];
    }

    return $post;
}

echo json_encode(getPost());

请注意,在这种情况下,我没有向客户端发送错误消息(在$e->getMessage()中),因为有关数据库的技术错误不适合用户,并且可能有助于破解尝试。

此外,值得进行防御性编程 - 而不是运行可能引发错误的代码,通常可以在运行该代码之前进行检查,以便可以避免错误而不是捕获错误。 / p>

答案 1 :(得分:0)

是的,您可以从php回显json数据结构中的数据。这是示例

<强> PHP

$data = array( 'name' => 'David' , 'age' => '25' );
header('Content-Type: application/json');
echo json_encode($data); //Convert array to json string

Javascript(客户端)

  var data = { 'var' : '123' }; // Some data if you want to send to server

    $.ajax({

    url: "PATH_TO_PHP_FILE", 
    data : data, 
    dataType: "json",

    success: function(json){

    var response=jQuery.parseJSON(json);

    if(typeof response =='object') {

    alert(json.name);
    alert(json.age);

    } else {        
    echo "Not valid json object";
    }

    }

    });