2016-02-26 59 views
0

所以我必須錯過一些東西。我可以檢索zpidzestimate沒有問題做了以下內容: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); 

由於代達羅斯有用的解釋是,當我檢索整數時這不是問題,但是當我檢索文本時出現問題。當我試圖在用JSON編碼的數組中一起檢索Zestimate和地址時,我最初放入了這行代碼。當它不成功時,我退後一步,看看是否可以單獨檢索地址,但沒有成功。我從來沒有考慮過這段代碼,因爲AJAX似乎仍然可以正常工作。

因此,令人困惑的結果。

更改該行回:

retrieve = xmlhttp.responseText; 

讓我找回成功的地址。

難道你沒有導致巨大問題的簡單錯誤?回到搞清楚爲什麼JSON編碼和解析不起作用,但這是另一篇文章的問題。

+0

我很高興你明白了:) – Machavity