Zillow 数据 - json_encode 不工作 - 适用于常规变量
Zillow Data - json_encode not working - works for regular variables
我有一个问题以前可能已经解决也可能没有解决,但我似乎是这里唯一使用纯 JavaScript 而不是 JQuery 来完成我的简单 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®</span>
</div>
<span id="zestimatePrice">'+retrieve[0]+'</span>
</div>
<div id="zillowDisclaimer">
<span>© Zillow, Inc., 2006-2014. Use is subject to <a href="http://www.zillow.com/corp/Terms.htm">Terms of Use</a></span
<span>What’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 中的 returns 是 [object Object]
,在我的控制台中没有错误。
但是,看到2个变量$one
和$two
了吗?如果我把它们放在 json_encode
中,就像 echo json_encode(array($one,$two));
它 returns one
就像它应该的那样。
我不确定 Zillow 数据有何不同。我可以 echo
它单独没问题。但我需要发送多个值才能使用。有什么想法吗?
当您使用 SimpleXML 解析文档时,所有节点都是 objects,当您尝试回显它们时,它们会被转换为字符串,但是当提供给像 json_encode
这样的函数时,您不会不会得到您期望的结果。
要使它们成为字符串以便 json_encode
工作,试试这个:
$zestimate = (string)$zdata->response->zestimate->amount;
$street = (string)$zdata->response->address->street;
echo json_encode([$zestimate, $street]);
我有一个问题以前可能已经解决也可能没有解决,但我似乎是这里唯一使用纯 JavaScript 而不是 JQuery 来完成我的简单 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®</span>
</div>
<span id="zestimatePrice">'+retrieve[0]+'</span>
</div>
<div id="zillowDisclaimer">
<span>© Zillow, Inc., 2006-2014. Use is subject to <a href="http://www.zillow.com/corp/Terms.htm">Terms of Use</a></span
<span>What’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 中的 returns 是 [object Object]
,在我的控制台中没有错误。
但是,看到2个变量$one
和$two
了吗?如果我把它们放在 json_encode
中,就像 echo json_encode(array($one,$two));
它 returns one
就像它应该的那样。
我不确定 Zillow 数据有何不同。我可以 echo
它单独没问题。但我需要发送多个值才能使用。有什么想法吗?
当您使用 SimpleXML 解析文档时,所有节点都是 objects,当您尝试回显它们时,它们会被转换为字符串,但是当提供给像 json_encode
这样的函数时,您不会不会得到您期望的结果。
要使它们成为字符串以便 json_encode
工作,试试这个:
$zestimate = (string)$zdata->response->zestimate->amount;
$street = (string)$zdata->response->address->street;
echo json_encode([$zestimate, $street]);