【发布时间】:2017-12-05 13:04:09
【问题描述】:
所以我试图发送一个带有“区域”属性的对象的POST 请求。这将返回一些仅位于某个区域周围的数据。我使用的 API 在 php 中,但我使用的是 javascript。我已经提出了POST 请求并且一直在获取信息,但是当我试图告诉它我想使用哪个“区域”时,我无法让它工作。 API 说该区域需要一个数组,但是当我在 javascript 中执行此操作时,我得到一个TypeError。这是 API:
search_area_name:在特定区域内搜索。如果将使用此搜索条件,建议构建一个选择列表以供选择。 值:(数组)
在php中设置数据的例子如下:
$data = array (
'partner_key' => '7e52cad4e91ee36e308d35f93a9db02b',
'action' => 'propertySearch',
'return' => 'xml',
'search_offset' => '0',
'search_limit' => '100',
'search_mls_id' => array('1'),
'search_area_name'=>array("Kimball","Silver Creek Commercial"),
'debug' => '0'
);
我的 POST 请求在 javascript 中设置了我的数据:
app.get("/listing", function (req, res) {
var listingID = req.query.id, //passing these in later..
listingAddress = req.query.address,
listingArea = [req.query.area];
var data = {
partner_key : '7e52cad4e91ee36e308d35f93a9db02b',
action : 'propertySearch',
return : 'json',
search_offset : '0',
search_limit : '15',
search_mls_id : ['1'],
search_area_name : listingArea,
debug : '0'
};
request.post({url: url, formData: data}, function(err, httpResponse, body) {
if (!err && httpResponse.statusCode == 200) {
var mlsData = JSON.parse(body);
res.render('listing', {mlsData: mlsData['data']});
}
else {
return console.error('upload failed:', err);
}
});
});
所以我意识到要阅读的内容很多,但如果我取出 search_area_name 属性,一切都很好,我会收到我期望的确切响应。当我使用search_area_name 属性运行脚本时,我收到TypeError。任何建议或意见将不胜感激!
编辑,附加信息:
这是我的浏览器将显示的内容(以防万一):
TypeError: /Users/blazekotsenburg/WebstormProjects/ResidePC/assets/views/listing.ejs:129
127| <%include partials/filter-suggest.ejs%>
128|
>> 129| <%include partials/listingGridTemplate.ejs%>
130|
131| <%include partials/footer.ejs%>
esc is not a function
at rethrow (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:285:18)
at eval (eval at compile (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:524:12), <anonymous>:268:9)
at eval (eval at compile (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:524:12), <anonymous>:270:10)
at returnedFn (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:555:17)
at tryHandleCache (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:203:34)
at View.exports.renderFile [as engine] (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/ejs/lib/ejs.js:412:10)
at View.render (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/express/lib/view.js:128:8)
at tryRender (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/express/lib/application.js:640:10)
at Function.render (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/blazekotsenburg/WebstormProjects/ResidePC/node_modules/express/lib/response.js:971:7)
和listingGridTemplate.ejs,我猜这是失败的地方,即使它在该属性未通过时也有效,是这样的:
<div class="row grid-list"><!-- Begin First Row-->
<div class="container">
<h1 id="featured-listings">Featured Listings</h1>
<% mlsData.forEach(function(listing) { %>
<div class="col-lg-4 col-md-4 col-sm-6">
<div id= "<%= listing['list_id']%>">
<% var listingImage = listing['photos'].split(",");%>
<% if (!listingImage[0]) { %>
<div class="thumbnail photo-card">
<%include listingGridStatus.ejs%>
<a href="/listing?id=<%=listing['list_id']%>?area=<%=listing['area_name']%>?address=<%=listing['address']%>">
<img class="img-responsive" src="https://source.unsplash.com/wtrAchtpc-w">
<p class="no-image-header">No Images <i class="fa fa-frown-o" aria-hidden="true"></i></p>
<section class="photo-card-info-spec-row1">
<span class="photo-card-price">
$<%= listing['price'].replace(/\B(?=(\d{3})+(?!\d))/g, ",") %>
</span>
<span class="photo-card-info">
<%include listingGridPropCheck.ejs%>
</span>
</section>
<section class="photo-card-info-spec-row2">
<span class="photo-card-dom">
<span class="dom">dom:</span>
<%= listing['days_on_market']%>
</span>
<span class="photo-card-punct">|</span>
<span class="photo-card-address">
<%= listing['address']%>,
<%= listing['city']%>,
<%= listing['state']%>
</span>
</section>
</a>
</div>
<% } else { %>
<div class="thumbnail photo-card">
<%include listingGridStatus.ejs%>
<a href="/listing?id=<%=listing['list_id']%>&address=<%=listing['address']%>&area=<%=listing['area_name']%>">
<img class="img-responsive img-drop-shadow" src="http://www.realcove.net/<%= listingImage[0]%>">
<section class="photo-card-info-spec-row1">
<span class="photo-card-price">
$<%= listing['price'].replace(/\B(?=(\d{3})+(?!\d))/g, ",") %>
</span>
<span class="photo-card-info">
<%include listingGridPropCheck.ejs%>
</span>
</section>
<section class="photo-card-info-spec-row2">
<span class="photo-card-dom">
<span class="dom">dom:</span>
<%= listing['days_on_market']%>
</span>
<span class="photo-card-punct">|</span>
<span class="photo-card-address">
<%= listing['address']%>,
<%= listing['city']%>,
<%= listing['state']%>
</span>
</section>
</a>
</div>
<% } %>
</div>
</div>
<% }); %>
</div>
</div>
【问题讨论】:
-
request.post()来自什么框架?这不是 Javascript 内置函数。 -
这是 Node.js 吗?
-
是的,这是 node.js,对不起,我已经拥有了这么多,所以我忘了放这个
-
@Barmar 我相信这是节点和快递
-
是的,节点快递和请求
标签: javascript node.js express post typeerror