xml — Zillow API получает адресные данные, используя переполнение стека

Так что я должен что-то упустить. Я могу получить zpid и zestimate нет проблем сделать следующее:

$zdata->response->zpid; //zpid
$zdata->response->zestimate->amount; //zestimate

Но потом, когда я пытаюсь получить то, что кажется очевидным эквивалентом для получения части адреса:

$zdata->response->address->street;
$zdata->response->address->city;

Ничего из этого не работает! Зачем?? Очевидно, я должен что-то здесь упустить. Ниже весь мой код

<?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);

//echo $zdata->response->zestimate->amount;

//$zestimate=$zdata->response->zestimate->amount;
$zstreet=$zdata->response->address->street;
echo $street;
?>

Глядя на вывод XML, как видно из собственной документации Zillow, я следую той же схеме, чтобы попытаться получить улицу, как получить оценку. Я не очень знаком с работой с XML, поэтому вполне возможно, что я что-то упустил.

Итак, я получаю сообщение об ошибке в моей консоли, которое показывает следующее:

Uncaught SyntaxError: Неожиданный токен T

Кажется, что буква «Т» является первой буквой введенной улицы, так как она меняется соответственно. Возможно, это могло бы пролить свет на проблему?

Я тоже выложу свой AJAX, но я не знаю, почему с ним что-то не так. Как указано выше, я могу нормально отображать ZPID и Zestimate, только адрес не работает.

AJAX / JS:

function validateAddress(){
var address = document.getElementById('address').value;
var csz = document.getElementById('city_state_zip').value;

if (address == null || address == "" || csz == null || csz == "") {
return false;
}
else{
getZestimate(address,csz);
}
}

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);
retrieve = xmlhttp.responseText;
document.getElementById("zestimateArea").innerHTML = '<div id="zillowWrap"><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+'</span><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>';
}
else{
document.getElementById("zestimateArea").innerHTML = "Error!"}
}

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

return false;
}

0

Решение

Поэтому, когда я отправил опубликовать свой AJAX в качестве последней попытки помочь, я увидел, что у меня все еще была эта строка кода:

retrieve = JSON.parse(xmlhttp.responseText);

Как любезно объяснил Дедал, это не было проблемой, когда я получал целые числа, но создавало проблему, когда я получал текст. Первоначально я вставил эту строку кода, когда пытался получить и Zestimate, и адрес вместе в массиве, закодированном с помощью JSON. Когда это не удалось, я сделал шаг назад, чтобы посмотреть, смогу ли я получить адрес по отдельности, но безуспешно. Я никогда не думал дважды об этой строке кода, поскольку AJAX все еще работал нормально.

Отсюда и недоумение.

Изменив эту строку обратно на:

retrieve = xmlhttp.responseText;

Позволил мне получить адрес с успехом.

У вас не было простых ошибок, которые вызывают огромные проблемы? Вернемся к выяснению, почему кодирование и синтаксический анализ JSON не работают, но это вопрос для другого поста.

0

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

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

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