0

だから私は何かが欠けているに違いない。次のようにして、 zpidzestimateを問題なく取得できます。

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

Zillow 自身のドキュメンテーションにある XML 出力を見ると、通りを取得しようとするのと同じパターンに従って、zestimate を取得しようとしています。私は XML の操作にあまり慣れていないので、何かが欠けている可能性が非常に高いです。

そのため、コンソールに次のようなエラーが表示されます。

キャッチされていない SyntaxError: 予期しないトークン T

「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;
}
4

1 に答える 1

0

そのため、助けを求めて最後の手段として AJAX を投稿しようとしたとき、まだ次のコード行が残っていることがわかりました。

retrieve = JSON.parse(xmlhttp.responseText);

Daedalus が親切に説明してくれたように、これは整数を取得しているときには問題ではありませんでしたが、テキストを取得しているときには問題を引き起こしました。JSON でエンコードされた配列で Zestimate とアドレスの両方を取得しようとしたときに、最初にそのコード行を挿入しました。うまくいかなかったとき、私は一歩下がって、アドレスを個別に取得できるかどうかを確認しましたが、成功しませんでした. AJAX はまだ正常に動作しているように見えたので、そのコード行について深く考えたことはありませんでした。

したがって、当惑する結果。

その行を次のように変更します。

retrieve = xmlhttp.responseText;

成功してアドレスを取得できました。

大きな問題を引き起こす単純な間違いがありませんでしたか? JSON のエンコードと解析が機能しない理由の解明に戻りますが、それは別の投稿の質問です。

于 2016-02-28T00:40:22.243 に答える