传递'%'时,jQuery.ajax将'(MISSING)'添加到JSON响应中(perc符号)

时间:2013-11-01 18:24:18

标签: javascript jquery ajax json

我对此感到困惑: 的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响应正在更改添加此“(MISSING)”位的JSON文本,从而使parseJSON失败。

为什么会这样?我该如何避免呢?

米;

1 个答案:

答案 0 :(得分:0)

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

$.ajax({ 
  url : "/scripts/test.pl",
  dataType: "json",
  success : function(resp) {console.log(resp);}
  } );