JSON.parse(数据)导致错误

时间:2017-10-10 17:44:59

标签: javascript json

问题似乎很简单: AJAX post请求的回调函数在参数' data':

中接收此json字符串
{"result":"Torte"}.

当我像这样手动解析它时

var antwort = JSON.parse('{"result":"Torte"}');

没关系。 但

var antwort = JSON.parse("'" + data + "'");

导致错误

Uncaught SyntaxError: Unexpected token ' in JSON at position 0
at JSON.parse (<anonymous>)

使用

var antwort = JSON.parse(data); 

出现了类似的错误(在Chrome的开发者工具中):

VM1285:2 Uncaught SyntaxError: Unexpected token < in JSON at position 21
at JSON.parse (<anonymous>)

所以似乎&#39;数据&#39;包含其他字符。 另一方面,使用

使接收的json-string可见
$("#idTest").html(data)

只是显示

{"result":"Torte"}

没有其他字符。

我一直在研究这个问题好几个小时 - 没有成功。 请有人帮帮忙。

3 个答案:

答案 0 :(得分:2)

JSON.parse中的数据必须是包含有效JSON的字符串。这不是错误,它是一个例外,警告您解析器找到了无效的令牌。

此外:您的JSON不能以<'开头。

答案 1 :(得分:0)

谢谢大家的支持! 问题是我在php文件中有一个html标题。

JSON.parse(JSON.stringify(数据));不需要。

php文件末尾的以下2行完成工作:

$antwort['result'] = "Torte";
echo json_encode($antwort);

答案 2 :(得分:0)

我将调用 .map 的数据,以使用 .push 将其加载到矩阵中,但是我无法将数据的值放入 JSON.parse

我的练习目的是通过选择()1选项作为选项加载到()2中。

为此,请映射选择1中的数据,然后通过onClick事件将数据加载到数组中,以读取选择2中的选项。

const filtraritems = [{ value: 'test', label: 'Probando la lista' }];

const buscarOpciones = items.map(item => (
      <option
        key={item.id}
        onClick={() => {
          const { value } = item;
          filtraritems.push(
            **JSON.parse('{"value": ${items.value}, "label": ${items.label}}')**
          );
          console.log(filtraritems);
        }}
      >
        {item.nombre}
      </option>
    ));