无法调用undefined handlebars.js的方法'match'

时间:2013-01-11 15:23:06

标签: php javascript json handlebars.js

我正在尝试在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}]}

1 个答案:

答案 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();