【问题标题】:Unexpected token < in JSON at position 4JSON 中第 4 位的意外令牌 <
【发布时间】:2016-08-17 07:35:47
【问题描述】:
var url="http://fsa.citop.in/lnct/service/signProcess.aspx";
var data={txtLogId: "abc@xyz.com",txtLogPass: "xyz",hdnReqType2: "sign87162"};
var success=function(data, textStatus, jqXHR) {
            console.log(data);
         };

var fail=function(jqXHR, textStatus, errorThrown) {
         console.log("Error:" + errorThrown );
     }
$.ajax({
  type: "POST",
  url: url,
  data:data,
  success:success,
  error:fail,

});

这个 POST 请求在 chrome 中的页面“http://fsa.citop.in/lnct/”的控制台中给了我错误SyntaxError: Unexpected token &lt; in JSON at position 4

但如果我使用 fsa.citop.in/lnct/service/signProcess.aspx(即没有 http://),它不会给我任何错误,但数据中没有返回任何内容。在 POST 请求的 success 上,需要一个 JSON 对象。请有人解释这里发生了什么以及如何解决它。

【问题讨论】:

  • 您是否在成功回调中使用JSON.parse(data)?你会得到同样的错误,因为函数需要一个字符串。

标签: javascript jquery json ajax


【解决方案1】:

对于在 AWS Lambda 代码编辑器中遇到此问题的用户,很可能您的会话已超时。

尝试重新加载页面并重新登录。 它应该可以解决这个问题。

【讨论】:

    【解决方案2】:

    这很可能是因为响应是 HTML 并且它试图将其解析为其他内容。第 4 位的 &lt;&lt;!DOCTYPE html... 的第一个

    您应该尝试在您的 ajax 调用中指定 dataType(参见 http://api.jquery.com/jquery.ajax/)并让 signProcess.aspx 返回更有用的内容(当前响应内容类型是 application/json,但它会打印 HTML)。

    【讨论】:

    • 默认数据类型为 Intelligent Guess(xml、json、script 或 html)
    • 将数据类型设置为文本有效。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2018-08-22
    • 2016-12-13
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多