Javascript JSON-语法错误:意外的标记&;

Javascript JSON-语法错误:意外的标记&;,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,当我返回提交API的AJAX表单的值时,我得到以下结果: SyntaxError: Unexpected token & AJAX响应处理如下所示: $(document).ready -> $(".edit_code_lesson").on("ajax:success", (e, data, status, xhr) -> result = JSON.parse(data) alert(result); ).bind "ajax:error", (

当我返回提交API的AJAX表单的值时,我得到以下结果:

SyntaxError: Unexpected token &
AJAX响应处理如下所示:

$(document).ready ->
  $(".edit_code_lesson").on("ajax:success", (e, data, status, xhr) ->
    result = JSON.parse(data)
    alert(result);
  ).bind "ajax:error", (e, xhr, status, error) ->
    console.log(status + '\n ' + error);
    console.log(xhr);
{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0}
{"stdout": "2\n", "stderr": "", "wallTime": 237, "exitCode": 0}
xhr
查看
responseText
后,我可以看到响应是:

"{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0}"
我是HTML新手,所以我不确定响应是否应该是HTML。我怎样才能解决这个问题


注意:这是一个使用API包装的Rails应用程序。

即使更正了HTML实体*,也不会是JSON。它看起来是这样的:

$(document).ready ->
  $(".edit_code_lesson").on("ajax:success", (e, data, status, xhr) ->
    result = JSON.parse(data)
    alert(result);
  ).bind "ajax:error", (e, xhr, status, error) ->
    console.log(status + '\n ' + error);
    console.log(xhr);
{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0}
{"stdout": "2\n", "stderr": "", "wallTime": 237, "exitCode": 0}
而JSON看起来是这样的:

$(document).ready ->
  $(".edit_code_lesson").on("ajax:success", (e, data, status, xhr) ->
    result = JSON.parse(data)
    alert(result);
  ).bind "ajax:error", (e, xhr, status, error) ->
    console.log(status + '\n ' + error);
    console.log(xhr);
{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0}
{"stdout": "2\n", "stderr": "", "wallTime": 237, "exitCode": 0}
您需要修复此服务器端,以便:1。它不做HTML编码,2。它确实输出JSON,而不是类似PHP的语法。(如果您使用的是PHP,则可以使用输出JSON。)



(*通常情况下,您不会对JSON进行HTML编码。您唯一可以这样做的时候是在HTML页面中给出JSON示例,并希望确保它看起来正确[就像任何其他文本])

这不是有效的JSON。您需要使您的服务器不是HTML编码文本,而不是插入到HTML中。响应看起来像是通过函数传递的json,HTML转义特殊字符。。。