javascript — Zillow Data — json_encode не работает — работает для обычных переменных

У меня есть проблема, которая могла или не могла быть решена раньше, но я, кажется, здесь единственный, кто использует чистый JavaScript вместо JQuery для выполнения моих простых запросов AJAX.

Сначала вот мой AJAX:

function getZestimate(address,csz){
var xmlhttp = new XMLHttpRequest();

var userdata = "address="+address+"&csz="+csz;

xmlhttp.open("POST","../wp-content/themes/realhomes/submit_address.php",true);

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
retrieve = JSON.parse(xmlhttp.responseText);
document.getElementById("zestimateArea").innerHTML =
'<div id="zillowWrap">
<div id="logoANDtag">
<a href="http://www.zillow.com"><img src="http://www.zillow.com/widgets/GetVersionedResource.htm?path=/static/logos/Zillowlogo_150x40.gif" width="150" height="40" alt="Zillow Real Estate Search" id="ZillowLogo" /></a>
<span id="zestimateTag">Zestimate&reg;</span>
</div>
<span id="zestimatePrice">'+retrieve[0]+'</span>
</div>
<div id="zillowDisclaimer">
<span>&copy; Zillow, Inc., 2006-2014. Use is subject to <a href="http://www.zillow.com/corp/Terms.htm">Terms of Use</a></span
<span>What&rsquo;s a <a href="http://www.zillow.com/wikipages/What-is-a-Zestimate">Zestimate?</a>
</div>';
}
else{
document.getElementById("zestimateArea").innerHTML = "Error!"}
}

xmlhttp.send(userdata);
document.getElementById("zestimateArea").innerHTML = "Generating...";

return false;
}

Далее вот мой PHP:

<?php
$zillow_id = '1234';
$search = $_POST['address'];
$citystate = $_POST['csz'];
$address = urlencode($search);
$citystatezip = urlencode($citystate);

$url = "http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=".$zillow_id."&address=".$address."&citystatezip=".$citystatezip;
$result = file_get_contents($url);
$data = simplexml_load_string($result);

$zpidNum = $data->response->results->result[0]->zpid;

$zurl = "http://www.zillow.com/webservice/GetZestimate.htm?zws-id=".$zillow_id."&zpid=".$zpidNum;
$zresult = file_get_contents($zurl);
$zdata = simplexml_load_string($zresult);

$zestimate=$zdata->response->zestimate->amount;
$street=$zdata->response->address->street;
$city=$zdata->response->address->city;
$state=$zdata->response->address->state;
$zip=$zdata->response->address->zip;
$one='one';
$two='two';
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode(array($zestimate,$street));
?>

Что возвращается в моем AJAX [object Object] без ошибок в моей консоли.

Тем не менее, см 2 переменных $one а также $two? Если я помещу их в json_encode лайк echo json_encode(array($one,$two)); это возвращается one как и должно быть.

Я не уверен, в чем разница с данными Zillow. Я могу echo это индивидуально без проблем. Но мне нужно отправить несколько значений для работы. Есть идеи?

2

Решение

Когда вы анализируете документ с использованием SimpleXML, все узлы объекты которые приводятся к строкам, когда вы пытаетесь их отобразить, но когда они передаются функции, подобной json_encode, вы не получите ожидаемых результатов.

Чтобы сделать их струнами так json_encode работает, попробуйте это:

$zestimate = (string)$zdata->response->zestimate->amount;
$street    = (string)$zdata->response->address->street;

echo json_encode([$zestimate, $street]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]