2016-11-15 2 views
1

Hilf mir bitte. Ich habe eine JSON-Datei, die in PHP generiert wird. Ich muss die Datei an die Komponente React js von Ajax übertragen. Aber etwas läuft schief. Konsole schreibt, dass der Fehler in JSON, aber JSON automatisch generiert wird. Vielen Dank!Connect JSON-Datei von PHP zu ReactJs

Mein Code reactjs:

/*var data = [ 
{type: 1, tempFrom: "+5", tempTo: "+8"}, 
{type: 2, tempFrom: "+5", tempTo: "+8"}, 
{type: 3, tempFrom: "+5", tempTo: "+8"}, 
{type: 4, tempFrom: "+5", tempTo: "+8"} 
];*/ 


var WeatherItem = React.createClass({ 
render: function() { 
    return (
    <div className="weatherItem"> 
    <h2 className="weatherCity"> 
    {this.props.city} 
    </h2> 
    {this.props.children} 
    </div> 
); 
} 
}); 

var WeatherBox = React.createClass({ 
getInitialState: function() { 
    return {data: []}; 
}, 
componentDidMount: function() { 
$.ajax({ 
    url: this.props.url, 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
    this.setState({data: data}); 
    }.bind(this), 
    error: function(xhr, status, err) { 
    console.error(this.props.url, status, err.toString()); 
    }.bind(this) 
}); 
}, 
render: function() { 
return (
    <div className="wetherBox"> 
    <h1> Weather</h1> 
    <WeatherForm /> 
    <WeatherList data={this.state.data} /> 
    </div> 
); 
} 
}); 

var WeatherList = React.createClass({ 
    render: function() { 
    var weatherNodes = this.props.data.map(function(weatherItem){ 
    return (
    <WeatherItem city = {weatherItem.city} key = {weatherItem.id}> 
    {weatherItem.text}</WeatherItem> 
    ); 
    }); 
    return (
    <div className="weatherList"> 
    {weatherNodes} 
    </div> 
); 
} 
}); 

var WeatherForm = React.createClass({ 
render: function() { 
    return (
    <div className="weatherForm"> 
    Hello, world! I am a WeatherForm. 
    </div> 
); 
} 
}); 

ReactDOM.render(
<WeatherBox url="weather.php" />, 
document.getElementById('content') 
); 

PHP:

<?php 
$city = $_POST["city_id"]; 

$data_file = 'https://export.yandex.ru/bar/reginfo.xml?region='.$city.'.xml'; // загружаем файл прогноза погоды для выбранного города 
$xml = simplexml_load_file($data_file); // загружаем xml файл через simple_xml 

foreach($xml->weather->day as $day){ 

    foreach($day->day_part as $day_part): 
    $img = strval($day_part->{'image-v2'}); 
    $tempFrom = strval($day_part->temperature_from); 
    $tempTo = strval($day_part->temperature_to); 

    $attrs = $day_part->attributes(); 
    $type= strval($attrs['type']); 

    echo json_encode(array("type"=>$type, "src"=>$img, "tempFrom"=>$tempFrom, "tempTo"=>$tempTo)); 

    endforeach; 
} 

Error

enter image description here

+0

Es scheint wie die Antwort ist nicht JSON, ist ein Fehler für den Server produziert. Können Sie die Antwort von der Registerkarte Netzwerk überprüfen? –

+0

Ich habe ein Foto hinzugefügt. Die JSON-Datei kann gesehen werden –

Antwort

1

Try-Header auf Ihre Antwort Hinzufügen von Arrays, um anzuzeigen, ist JSON Inhalt, Echo der Ergebnis ist kein gültiger JSON, Refaktor yo Ihr Code auf diese Weise:

+0

Vielen Dank für Ihre Hilfe! Es klappt –