JSON 解析错误:window.onload vs XMLHttpRequest

JSON parse error: window.onload vs XMLHttpRequest

本文关键字:onload vs XMLHttpRequest window 错误 JSON      更新时间:2023-09-26

我无法解析 PHP 在 AJAX- XMLHttpRequest() 之后返回的简单 JSON 对象。简而言之,这是奇怪的之处(使用简单的json进行测试(:

在页面加载时,如果 PHP 发送:

<script>window.onload=function(){JSON2HTML({htm:{world {innerHTML:"hello!"}}});}</script>

我的小JSON2HTML函数识别 TypeOf 对象并毫无怨言地解析 JSON。

但是,如果 PHP 通过 XMLHttpRequest() 返回完全相同的 JSON 字符串(来自相同的 PHP 变量(

{htm:{world:{innerHTML:"hello!"}}}

并且onreadystatechange调用JSON2HTML来处理它,然后JavaScript总是将其解释为字符串类型而不是typeof对象,并且函数失败。

我已经将 php 响应标头设置为 "Content-Type:application/json;charset=utf-8" ,从响应字符串中删除了所有非 ascii 字符,并以各种可以想象的方式操作了 json 对象,并且总是得到相同的结果。我还尝试JSON.parse ajax 字符串并得到"意外令牌"错误。

有谁知道这里可能会发生什么?

恰好包含有效 JSON 的字符串与实际的 JavaScript 对象不同。在转换为 HTML 之前尝试JSON.parse(your_response_string)。它可能会抱怨缺少引号,因此请确保您的响应是 100% 有效的 JSON,如下所示:

{"htm":{"world":{"innerHTML":"hello!"}}}