php阵列到json编码不起作用

时间:2015-09-23 20:41:31

标签: php jquery json ajax xml

我有一个与我的json.php文件的ajax连接,但是它没有工作......你知道发生了什么吗? 是我的$输出变量是不能转换为json它可以是我的ajax吗?! 任何帮助将不胜感激。 PS:当我点击一个不存在的城市时......它会输出$ output变量。当我点击一个存在的城市时,我什么也得不到。 它杀了我。  var_dump($ output){如果未编码}是:

    array (size=1)
  0 => 
    array (size=4)
      0 => 
        object(SimpleXMLElement)[9]
      1 => 
        object(SimpleXMLElement)[8]
      2 => 
        object(SimpleXMLElement)[7]
      3 => 
        object(SimpleXMLElement)[10]

json.php文件:

<?php

if(isset($_POST['city'])){
    $city = $_POST['city']; //checks if variable city is set if not it will be set as default 
    var_dump($city); 
}else{
    $city = 'New York';


}
//loads data as simple xml
$result = "http://api.wunderground.com/api/KEY/geolookup/conditions/q/ro/$city.xml";
$xml = simplexml_load_file($result);
#echo htmlspecialchars($result, ENT_QUOTES, 'UTF-8');
$place = $xml->location->city; //gets the city name
#var_dump($place);
if(!empty($place)){ //checks if city exits
  foreach($xml->current_observation as $item){
    $current = (string)$item->weather;
    $temperature = (string)$item->temp_c;
    $time = (string)$item->local_time_rfc822;
    $wind = (string)$item->wind_string;
    $humidity = (string)$item->relative_humidity;
    $output[] = array($time, $temperature, $current, $wind); 

}

    }
}else{
    $output = 'No results found, please try a different city.';  //if variable $place is empty it will print this
}

header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('data' => $output),true);
?>

和jQuery文件:

 $(document).ready(function() {
    $('li').click(function(){
            var city = $(this).text(); //get the li content as variable city
            $.ajax({

                type : 'POST',      //sending data method
                url : 'json.php',
                data : {city:city}, //data to be sent
                dataType: 'json',
                success : function(data){
                $("#result").html(data);
            }
            });

    });
});

编辑1: 我已经更新了我的代码,我的输出是json编码的,等于

{"data":[["Thu, 24 Sep 2015 02:00:58 +0300","19.3","Clear","From the West at 1.6 MPH Gusting to 2.5 MPH"]]}

我认为现在的问题出在我的AJAX中(我是jQuery的新用户)当我点击一个城市时,我没有打印任何信息。

2 个答案:

答案 0 :(得分:0)

很多时候,当我们的数组内容未编码时,就会发生这种情况。通常,我们使用UTF-8编码。

因此,要解决此问题,您需要添加它,

mysqli_set_charset($con, 'utf8');

就在连接之后。

答案 1 :(得分:-2)

查看以下教程:https://lostechies.com/seanbiefeld/2011/10/21/simple-xml-to-json-with-php/

您将str_replacetrim然后对网络数据进行编码。