从AJAX返回的单独值

时间:2014-11-10 20:11:41

标签: javascript php jquery ajax

我的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;。

1 个答案:

答案 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'  */
}