我正在构建一个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);
}
});