2

以前に解決された、または解決されなかった問題がありますが、JQuery の代わりに純粋な JavaScript を使用して単純な 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個別でも問題ありません。しかし、操作するには複数の値を送信する必要があります。何か案は?

4

1 に答える 1

1

SimpleXML を使用してドキュメントを解析する場合、すべてのノードは、エコーしようとすると文字列にキャストされるオブジェクトですjson_encodeが、 のような関数に渡されると、期待する結果が得られません。

それらを文字列にするにjson_encodeは、これを試してください:

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

echo json_encode([$zestimate, $street]);
于 2016-03-02T05:24:44.647 に答える