2016-02-26 4 views
0

Так что я должен что-то упустить. Я не могу извлечь zpid и zestimate никаких проблем, выполнив следующие действия:Zillow API получает адресные данные, используя PHP

$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, я слежу по той же схеме, чтобы попытаться получить на улицу, чтобы получить zestimate. Я не очень хорошо знаком с работой с XML, поэтому очень возможно, что я чего-то не хватает.

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

неперехваченного 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

Можете ли вы 'var_dump ($ zdata-> response);'? – Machavity

+0

@Machavity $ vaddress = var_dump ($ zdata-> response); echo $ vaddress; Не удается. Я получаю это с помощью AJAX, поэтому он делает статус 4 или 200, не совсем уверен, как я могу получить более четкое сообщение об ошибке со стороны PHP. – Christine268

+0

Это не то, как вы [используйте var_dump] (http://stackoverflow.com/questions/14743342/how-do-i-properly-use-print-r-or-var-dump).Что касается конца AJAX, используйте консоль браузера (F12), чтобы показать, что ответ AJAX – Machavity

ответ

0

Так что, когда я пошел, чтобы после моего AJAX как последняя попытка за помощью я видел я до сих пор эта строка кода:

retrieve = JSON.parse(xmlhttp.responseText); 

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

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

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

retrieve = xmlhttp.responseText; 

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

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

+0

Я рад, что вы поняли это :) – Machavity

Смежные вопросы