2014-02-13 133 views
1

当我返回提交的API,我得到这个AJAX形式的值:JSON - 语法错误:意外的令牌

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); 

后看responseTextxhr我可以看到的反应是:

"{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0}" 

我是新来的HTML,所以我不确定响应应该是HTML。我怎样才能解决这个问题?

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

+2

这是无效的JSON。您需要让您的服务器不使用HTML编码未插入HTML的文本。 – SLaks

+0

响应看起来像json,它已通过HTML转义特殊字符的功能通过... –

回答

3

即使HTML实体被纠正*,那仍然不会是JSON。它应该是这样的:

{"stdout"=>"2\n", "stderr"=>"", "wallTime"=>237, "exitCode"=>0} 

而JSON是这样的:

{"stdout": "2\n", "stderr": "", "wallTime": 237, "exitCode": 0} 

你需要解决这个服务器端,因此:1。它不会做HTML-编码和2. 确实输出JSON,而不是PHP类似的语法。 (如果你使用PHP,您可以输出JSON使用json_encode


(*您不HTML编码JSON,通常你会做,唯一的一次是,如果你给了一个HTML页面中的JSON的例子,并希望确保它看起来正确[就像任何其他文本]。)