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

No console output when using render and 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");

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

jQuery.parseJSON报道:

Passing in a malformed JSON string results in a JavaScript exception being thrown.

因此,您的 api 不是 return 正确的 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>