Javascript jQuery.ajax添加';(失踪)和#x27;传递';%时发送到JSON响应';(perc符号)

Javascript jQuery.ajax添加';(失踪)和#x27;传递';%时发送到JSON响应';(perc符号),javascript,jquery,ajax,json,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(jQ

我对此感到困惑: 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>
输出:

Object {key: "value_%"} test.html:10
{"key":"value_%"(MISSING)} test.html:13
Uncaught SyntaxError: Unexpected token ( jquery.min.js:3
i、 e.ajax响应正在更改JSON文本,添加此“(缺少)”位,从而使parseJSON失败

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


M

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

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

我正在手动调用parseJSON来调试问题。如果我设置了数据类型,则永远不会触发成功回调,而是得到一个“parsererror”。无论如何,问题在于“$.ajax”位的插入,而不是我如何解析JSON。您在调试工具中检查过网络调用的响应了吗?可能是您的服务器正在插入此文件,也可能是出现故障的服务器。这似乎比jQueryAjax函数出错的可能性要大得多。服务器正试图解释值中的“%”(我以一种printf的形式回显脚本响应)。谢谢你的帮助!
$.ajax({ 
  url : "/scripts/test.pl",
  dataType: "json",
  success : function(resp) {console.log(resp);}
  } );