JSON.parse:JSON数据的第1行第2列的意外字符(HTML)

时间:2017-03-04 10:37:57

标签: javascript jquery json

如何解决此错误JSON.parse: unexpected character at line 1 column 2 of the JSON data

我正在尝试从自动收录器链接中显示特定的JSON内容,但遗憾的是无法使其正常工作,因为错误不断弹出。

HTML

  <input id="currency1" type="text">
  <span>Currency1</span>
  <input id="currency2" type="text">
  <span>Currency2</span>
  <div>
  <button type="button" onclick="refreshPrice()">
  Refresh Price
  </button>
  <span id="lastPrice"></span>
  </div>

来自Ticker Link的JSON响应

{"ticker":{"high":"16985100","low":"16730900","last":"16879000"}}

JAVASCRIPT

var lastPrice;
function refreshPrice() { 
$lastPrice = $('#lastPrice'); 
$lastPrice.html("");
$.get("https://example.com") //Ticker link
.then(function (data) {
  lastPrice = JSON.parse(data).ticker.last - 100000;
  lastPrice.html(lastPrice);
});
}

refreshPrice();
$('#currency2').keyup(function() {
currency2Val = parseFloat($(this).val());
if (currency2Val) {
 currency1Val = currency2Val * lastPrice;
  $('#currency1').val(parseInt(currency1Val));
}
else {
  $('#currency1').val("");
}
});

$('#currency1').keyup(function() {
currency1Val = parseInt($(this).val());
if (currency1Val) {
currency2Val = currency1Val / lastPrice;
  $('#currency2').val(currency2Val.toFixed(8));
}
else {
  $('#currency2').val("");
}
});

感谢任何帮助,谢谢

3 个答案:

答案 0 :(得分:2)

尝试删除JSON.parse,

var lastPrice;
function refreshPrice() { 
$lastPrice = $('#lastPrice'); 
$lastPrice.html("");
$.get("https://example.com") //Ticker link
.then(function (data) {
  debugger;
  lastPrice = data.ticker.last - 100000;
  lastPrice.html(lastPrice);
});
}

同时放置一个调试器,看看你的回复是什么。

答案 1 :(得分:1)

假设自动收报机使用正确的Content-Type标头进行响应,jQuery将已经为您解析了响应。因此请删除JSON.parse

$.get("https://example.com") //Ticker link
.then(function (data) {
  lastPrice = data.ticker.last - 100000;
  $lastPrice.html(lastPrice);
});

(我还使用lastPrice而不是$lastPricethe issue Jaromanda X pointed out添加了修补程序。)

来自the documentation

  

dataType(默认:智能猜测(xml,json,脚本或html))

     

类型:字符串

     

您期望从服务器返回的数据类型。 如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西都将作为字符串返回。)

答案 2 :(得分:0)

响应已经是JSON格式,你不应该通过JSON.parse传递它,因为JSON.parse期望输入是一个stringify JSON

试试这个:

   lastPrice = data.ticker.last - 100000;