从 PHP alogn 获取带有 PHP 输出的 JSON 输出(如 print() 等)


Get JSON output from PHP alogn with PHP output (like print(), etc.)

我正在构建一个PHP应用程序。我需要对一个 PHP 脚本进行 ajax 调用,该脚本会引用 HTML 代码。但是,我还需要接收一个变量以及 PHP 输出。我试图用 JSON 来实现这一点,但是我得到的是 PHP 输出或只是 JSON 数据。当我在 ajax 调用中使用数据类型:"json"时:

$.ajax({
   url: 'script.php',
   method: 'POST',
   dataType: 'json'
   success: function(returnData){
      $('body').append(returnData);
      alert(returnData.num);
   }
});

我无法从 PHP 脚本中的"echo"获取输出:

<?php
echo 'Hello World';
echo json_encode(array('num' => 11));
?>

因此,我在jQuery ajax调用中需要的是接收"Hello World"作为PHP输出并将其附加到body,然后从JSON中获取"num"变量。有什么建议吗?谢谢!

在 PHP 中

echo json_encode(array('num' => 11, 'text' => 'Hello World'));

在阿贾克斯中:

   success: function(returnData){
      $('body').append(returnData.text);
      alert(returnData.num);
     }

您不能同时解析两者 - 最好的选择是将 HTML 输出作为 JSON 输出的一部分包含在内。下面是一个示例:

<?php
echo json_encode(array('num' => 11, 'html' => 'Hello World!'));

回显 JSON 以外的任何内容都会破坏您的 JSON,您应该将任何预期的输出/数据放入您的 JSON 中。

<?php
header('Content-Type: application/json');
$json = array(
    'hello' => 'Hello World', 
    'num' => 11
);
echo json_encode($json);
?>

然后在你的jquery中,

$.ajax({
   url: 'script.php',
   method: 'POST',
   dataType: 'json'
   success: function(returnData){
        //your hello world string
        $('body').append(returnData.hello);
        //your num
        alert(returnData.num);
   }
});