使用render和jbuilder时没有控制台输出

时间:2016-08-16 18:23:29

标签: javascript ruby-on-rails json jbuilder

我遇到了这个奇怪的问题导致控制台在解析

后没有显示输出
 a= "<%=j render 'api/restaurants/index.json.jbuilder',restaurants: @restaurants %>";
json = $.parseJSON("<%= render 'api/restaurants/index.json.jbuilder',  restaurants: @restaurants %>");
 console.log(json);


a= "<%=j render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>";
json = $.parseJSON("<%= render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>");
console.log("console test");


a= "<%=j render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>";
json = $.parseJSON("<%= render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>");
console.log(a);

上面的代码片段不会在控制台中呈现任何内容,但下面的代码片段会提供控制台输出。

a= "<%=j render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>";
console.log(a);


 a= "<%=j render 'api/restaurants/index.json.jbuilder', restaurants: @restaurants %>";
 console.log("console test");

似乎解析正在阻止控制台输出任何内容。任何人都有任何想法为什么会发生这种情况以及如何解决它

1 个答案:

答案 0 :(得分:0)

jQuery.parseJSON中所述:

  

传入格式错误的JSON字符串会导致抛出JavaScript异常。

所以,你的api没有返回正确的json。

示例:

$(function () {
  try {
    var a = $.parseJSON("{test: 1}");
    console.log(a);
  } catch(err) {
    console.log('Err: ' + err);
  }
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>