如何将PHP中的JSON字符串转换为AJAX请求可用的合法转义格式
问题原因
你遇到的报错本质是语法冲突:PHP存储的原始JSON字符串内部包含大量双引号,直接输出到被双引号包裹的JS字符串中时,JSON内部的双引号会提前闭合JS的字符串边界,导致JS解析代码时语法错误,提示属性缺失。
解决方案
方案1:最优方案,直接输出JSON为JS对象
合法的JSON本身符合JS对象语法规范,不需要额外包裹为字符串,直接输出即可,完全避免转义问题:
<script> var settings = { "url": "https://example.com/update", "method": "POST", "timeout": 0, // 直接输出JSON内容,不需要手动加外层双引号 "data": <?php echo $data;?>, "dataType": "json", // 传递JSON请求体需要指定contentType "contentType": "application/json" }; $.ajax(settings).done(function (response) { console.log(response); }); </script>
方案2:匹配需求,生成转义后的JSON字符串
如果你确实需要将JSON作为字符串传入data参数,直接用PHP内置的json_encode()函数处理即可,该函数会自动转义所有双引号、特殊字符,输出完全符合JS语法规范的字符串,也能兼容你示例中的多语言内容:
<script> var settings = { "url": "https://example.com/update", "method": "POST", "timeout": 0, // json_encode会自动添加外层双引号、转义内部双引号,不需要手动处理 "data": <?php echo json_encode($data);?>, "dataType": "json", }; $.ajax(settings).done(function (response) { console.log(response); }); </script>
内容的提问来源于stack exchange,提问作者Vidhi Sharma
相关产品推荐
相关产品推荐

