【问题标题】:Zillow API get address data using PHPZillow API 使用 PHP 获取地址数据
【发布时间】:2016-06-09 03:05:45
【问题描述】:

所以我一定错过了什么。我可以检索 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 不是很熟悉,所以很可能我遗漏了一些东西。

所以我在控制台中收到一个错误,显示以下内容:

Uncaught SyntaxError: Unexpected token 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;
}

【问题讨论】:

  • 你能var_dump($zdata-&gt;response);吗?
  • @Machavity $vaddress=var_dump($zdata->response);echo $vaddress;失败。我正在使用 AJAX 获取它,因此它的状态为 4 或 200,不确定如何从 PHP 端获得更清晰的错误消息。
  • 这不是你use var_dump的方式。至于AJAX端,使用浏览器的控制台(F12)显示AJAX响应是什么
  • @Machavity 我从来没有使用过 var_dump 并且只是按照你所说的去做,我不知道你在评论中给了我不正确的语法。我将编辑我的帖子以在控制台中显示错误,我只是假设因为它显示了我自定义的错误消息,它只是意味着它无法处理,原因可能在 PHP 端,它发送的是什么结束了。
  • @Christine268 这不是评论中的语法错误,您只是误解了当前的语法。在注释的任何地方,评论的 OP 都没有将 var_dump 的结果分配给变量。

标签: php xml zillow


【解决方案1】:

因此,当我将我的 AJAX 作为最后一次努力寻求帮助时,我看到我仍然有这行代码:

retrieve = JSON.parse(xmlhttp.responseText);

正如 Daedalus 所解释的那样,这在我检索整数时不是问题,但在我检索文本时却造成了问题。当我试图在一个用 JSON 编码的数组中同时检索 Zestimate 和地址时,我最初将那行代码放入其中。当它不成功时,我退后一步,看看我是否可以单独检索地址,但没有成功。我从没想过那行代码,因为 AJAX 似乎仍然可以正常工作。

因此产生了令人困惑的结果。

将该行改回:

retrieve = xmlhttp.responseText;

允许我成功检索地址。

你没有犯过导致大问题的简单错误吗?回到找出 JSON 编码和解析不起作用的原因,但这是另一个帖子的问题。

【讨论】:

  • 很高兴你知道了 :)
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 2017-07-10
  • 2021-09-08
相关资源
最近更新 更多