我正在尝试在php中使用 handlebars.js 。我抓住通过 $ _ GET 传递的变量构建数组,然后将其附加到 http://my.service.url.comsearch.json?。 http_build_query($ myarray,'',"&"); 来填充我的网址,然后使用 file_get_contents 来获取&# 34; JSON&#34 ;.我正在尝试使用handlebars.js来显示结果。我在谷歌Chrome控制台中收到以下错误
"未捕获的TypeError:无法调用方法'匹配'未定义的 cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:431"
在查看控制台中错误的详细信息时,我看到了这个
lexer.next cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:431 法 cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:468 法 cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:238 解析 cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:251 Handlebars.parse cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:595 编 cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:1842 (匿名功能) cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js:1851 (匿名函数)profile.php:39
这是我正在使用的模板
<script id="ul" type="text/x-handlebars-template">
<ul>
{{#jsonResult}}
<li>{{name}}</li>
{{/jsonResult}}
</ul>
</script>
这是我正在使用的脚本,试图使用模板
</script>
<script type="text/javascript">
var source = $("ul").html();
var template = Handlebars.compile(source);
var json = $pJSON;
var data1 = JSON.stringify(json);
var data = JSON.parse(data1);
$("body").html(template(data));
</script>
这是上面控制台错误中引用的第39行&#34; $(&#34; body&#34;)。html(模板(数据));&#34; 的
最后这里是我得到的json(很好的样本)
{TOTALCOUNT:2,jsonResult:[{listingId:460880,PAGEURL:/page/LA/laplace/la-carreta-of-laplace/17-460880.html,name:拉 Carreta Of LaPlace,电话:(985)651-9991,地址:107 Carrollwood 博士,城市:拉普拉斯,州:LA,网址:HTTP://www.carretarestaurant.com,latitude:30.44437,经度:-91.14768,logoUrl:HTTP://url.com/imp/17/logo/LG460880.JPG ,enticerLine:\传统 风味墨西哥 美食\,照片:[{photoUrl:HTTP://url.com/imp/17/photo/PH460880_1_S.jpg,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_2_S。 JPG,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_3_S.jpg,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_4_S。 JPG,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_5_S.jpg,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_6_S。 JPG,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_7_S.jpg,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_8_S。 JPG,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_9_S.jpg,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_11_S。 JPG,photoDesc:},{photoUrl:HTTP://url.com/imp/17/photo/PH460880_12_S.jpg,photoDesc:}]},{listingId:430765,PAGEURL:/页/ LA /新奥尔良/ CASA -garcia - 墨西哥餐厅/ 17-430765.html,名称:卡萨 加西亚墨西哥餐厅,电话:(504)464-0354,地址:,城市:新的 新奥尔良州:LA},{listingId:223993,PAGEURL:/page/LA/metairie/casa-garcia-mexican-restaurant/17-223993.html,name:卡萨 加西亚墨西哥餐厅,电话:(504)467-4071,地址:8814退伍军人 纪念馆 BL,城市:梅泰里,州:LA,纬度:30.005453,经度:-90.224346},{listingId:115036,PAGEURL:/page/LA/kenner/casa-tequila/17-115036.html,name:卡萨 龙舌兰酒,电话:(504)443-5423,地址:3229威廉姆斯 BL,城市:肯纳,州:LA,纬度:30.014789,经度:-90.239894,displayAd:HTTP://url.com/imp/17/disp/DA115036_658760_1.JPG,displayAds:[{displayAd:HTTP:// URL .COM / IMP / 17 / DISP / DA115036_658760_1.JPG}]},{listingId:460184,PAGEURL:/page/LA/kenner/garces-latin-american-restaurant/17-460184.html,name:加尔塞斯 拉丁美洲餐厅,电话:(504)305-5035,地址:4221 Williams BL,城市:肯纳,州:LA,网址:HTTP://www.garcescubanrestaurant.com,latitude:30.033075,经度:-90.238324},{listingId:34172784,PAGEURL:/页/ LA /新奥尔良/ taco-钟新奥尔良/ CG-34172784.html,名称:塔克 贝尔,电话:(504)286-7901,地址:6220 Elysian Fields Ave,城市:新的 新奥尔良州:LA,纬度:30.022314,经度:-90.061329,enticerLine:经济头脑 家人和旅行者为美国领先的炸玉米饼而奔波 。链},{listingId:34184616,PAGEURL:/page/LA/new-orleans/taco-bell-new-orleans-5/cg-34184616.html,name:塔可 贝尔,电话:(504)391-6930,地址:4300 General Degaulle Dr,城市:新的 新奥尔良州:LA,纬度:29.919895,经度:-90.011082},{listingId:672267490,PAGEURL:/page/LA/new-orleans/taco-bell-new-orleans-4/cg-672267490.html,name:塔克 贝尔,电话:(504)283-9006,地址:4603 Chef Menteur Hwy,城市:新的 新奥尔良州:LA,纬度:30.006073,经度:-90.035487},{listingId:733204300,PAGEURL:/page/LA/new-orleans/taco-bell-orleans-4/cg-733204300.html,name:塔克 贝尔,电话:(504)246-6699,地址:6007 Bullard Ave,城市:新的 新奥尔良州:LA,纬度:30.043732,经度:-89.958962},{listingId:733204270,PAGEURL:/page/LA/new-orleans/taco-bell-orleans/cg-733204270.html,name:塔克 Bell,电话:(504)244-8761,地址:5611 Read Blvd,city:New 新奥尔良州:LA,纬度:30.030747,经度:-89.97091},{listingId:4431549,PAGEURL:/page/LA/new-orleans/taco-bell-orleans-4/cg-4431549.html,name:塔克 贝尔,电话:(504)821-4458,地址:2639 Tulane Ave,城市:新的 新奥尔良州:LA,纬度:29.96146,经度:-90.089724},{listingId:733204280,PAGEURL:/page/LA/new-orleans/taco-bell-orleans-2/cg-733204280.html,name:塔克 贝尔,电话:(504)240-6374,地址:6009 Bullard Ave,城市:新的 新奥尔良州:LA,纬度:30.044695,经度:-89.959174},{listingId:4415463,PAGEURL:/page/LA/harvey/taco-bell-harvey/cg-4415463.html,name:塔克 贝尔,电话:(504)362-0746,地址:929曼哈顿 大道,城市:哈维,州:LA,纬度:29.902112,经度:-90.064841,enticerLine:经济头脑 家人和旅行者为美国领先的炸玉米饼而奔波 。链},{listingId:34159784,PAGEURL:/page/LA/marrero/taco-bell-marrero-2/cg-34159784.html,name:塔可 贝尔,电话:(504)341-5367,地址:5141 Lapalco 大道,城市:马雷罗,州:LA,纬度:29.874902,经度:-90.098789},{listingId:34141058,PAGEURL:/page/LA/terrytown/taco-bell-terrytown/cg-34141058.html,name:塔克 贝尔,电话:(504)394-7584,地址:2640 Belle Chasse 高速公路,城市:Terrytown,州:LA,纬度:29.888259,经度:-90.030674},{listingId:612584560,PAGEURL:/page/LA/harvey/taco-bell-harvey-3/cg-612584560.html,name:塔克 贝尔,电话:(504)374-0972,地址:1740曼哈顿 大道,城市:哈维,州:LA,纬度:29.88825,经度:-90.056795},{listingId:708288570,PAGEURL:/page/LA/gretna/taco-bell-gretna/cg-708288570.html,name:TACO BELL,电话:(504)368-3370,地址:62 WESTBANK EXPY# B,城市:GRETNA,州:LA,纬度:29.918798,经度:-90.044141},{listingId:34183917,PAGEURL:/page/LA/westwego/taco-bell-westwego/cg-34183917.html,name:塔克 贝尔,电话:(504)341-6909,地址:1001 Westbank EXPY,城市:韦斯特维戈,州:LA,纬度:29.898329,经度:-90.142391},{listingId:672876420,PAGEURL:/page/LA/gretna/taco-party-gretna/cg-672876420.html,name:塔克 派对,电话:(504)312-3912,地址:1115 van Trump 街,城市:格雷特纳,州:LA,纬度:29.918975,经度:-90.045341},{listingId:647483470,PAGEURL:/page/LA/westwego/speedy-taco-westwego/cg-647483470.html,name:迅速 Taco,电话:(504)301-1524,地址:1020 Bridge City AVE,城市:韦斯特维戈,状态:LA,纬度:29.930096,经度:-90.172423}]}
答案 0 :(得分:2)
{{#jsonResult}}
<li>{{name}}</li>
{{/jsonResult}}
#jsonResult
不会像您希望的那样迭代列表。你需要使用:
{{#each jsonResult}}
<li>{{name}}</li>
{{/each}}
请参阅http://handlebarsjs.com#iteration。
编辑:
您需要将var source = $("ul").html();
更改为var source = $("#ul").html();