0

我对此感到困惑:test.html:

<!DOCTYPE html>
<meta charset="utf-8">

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>

<body>
  <script>
    console.log(jQuery.parseJSON('{"key" : "value_%"}'));  ## line 10
    $.ajax(
    { url : "/scripts/test.pl",
      success : function(resp) {console.log(resp); console.log(jQuery.parseJSON(resp))}
    }
    );
  </script>
</body>

</html>

/scripts/test.pl:

print '{"key":"value_%"}';

输出:

Object {key: "value_%"} test.html:10
{"key":"value_%"(MISSING)} test.html:13
Uncaught SyntaxError: Unexpected token ( jquery.min.js:3

即 ajax 响应正在更改 JSON 文本添加此 '(MISSING)' 位,从而使 parseJSON 失败。

为什么会这样?我应该如何避免这种情况?

米;

4

1 回答 1

0

没有理由手动调用 parseJSON。只需使用 dataType 选项

$.ajax({ 
  url : "/scripts/test.pl",
  dataType: "json",
  success : function(resp) {console.log(resp);}
  } );
于 2013-11-01T18:30:07.677 回答