我的ajax函数返回两个值,当我调用" data"它们显示为一个。
的Javascript
$(document).ready(function() {
$.ajax({
type: 'POST',
url: 'checkinfo.php',
data: { address: "37.187.139.123", port: "26618" },
dataType: 'html',
async: true,
success: function(data)
{
$("output").html(data);
}
});
});
PHP
<?php
$SERVER_IP = $_REQUEST['address'];
$SERVER_PORT = $_REQUEST['port'];
$QUERY_PORT = $_REQUEST['port'];
$HEADS = "3D";
$show_max = "unlimited";
$SHOW_FAVICON = "on";
$TITLE = "My fancy Serverpage";
$TITLE_BLOCK_ONE = "General Information";
$TITLE_BLOCK_TWO = "Players";
$ping = json_decode(file_get_contents('http://api.minetools.eu/ping/' . $SERVER_IP . '/' . $SERVER_PORT . ''), true);
$query = json_decode(file_get_contents('http://api.minetools.eu/query/' . $SERVER_IP . '/' . $QUERY_PORT . ''), true);
if(empty($ping['error'])) {
$version = $ping['version']['name'];
$online = $ping['players']['online'];
$max = $ping['players']['max'];
$motd = $ping['description'];
$favicon = $ping['favicon'];
}
if(empty($query['error'])) {
$playerlist = $query['Playerlist'];
}
echo $version;
echo $online;
?>
我在&#34;输出中得到的输出&#34;元素是&#34;版本1.80&#34;。 $ version变量的位置是&#34;版本1.8&#34; $ online变量是&#34; 0&#34;。我如何分离这两个值并将它们分配给两个元素不同的元素ex。 output1和output2。
最后,有没有更好的方法可以直接从单个变量中获取值,而不是将echo全部用于它们并将它们收集为一个&#34;数据&#34;。
答案 0 :(得分:6)
您正在处理需要解析的纯文本/ html响应。此外,ajax函数只返回一个值。 PHP脚本回应的任何内容都会被转储到ajax响应中。
您应该将dataType
更改为json
,并将值作为json编码数组返回:
die(json_encode(array(
'version' => $version,
'online' => $online
)));
可以在javascript中访问:
data.version
data.online
ProTip:如果您不确定要返回的内容,请查看Chrome开发人员工具(或Firebug或其他)的网络标签。 Console.log()可用于将var转储到控制台进行检查,并且执行以下操作将允许您直接在控制台中操作它:
success: function(response) {
console.log(resp=response);
/* open the console, and you can manipulate the var 'resp' */
}