【问题标题】:Uncaught SyntaxError: Unexpected token ) when parsing JSON string with HTML insideUncaught SyntaxError: Unexpected token ) 解析带有 HTML 的 JSON 字符串时
【发布时间】:2013-05-16 13:15:45
【问题描述】:

这个问题已经阻塞了我的错误日志很长一段时间了。该功能正在做我想做的事情,但这条消息让我发疯!

function togglePreview( link_id ) {  
        var data = { ajax_cmd: 'get_embed_html', link_id: link_id };
        jQuery.post("?", data, function(json) {
            if (json.html) {
                jQuery( "#listen_" + link_id ).html( json.html );
            }
        }, "json"); 
}

服务器端,我有几行 PHP:

<?php
header('Content-Type: application/json');
$html = get_embed_html( $_REQUEST['link_id'] );
echo json_encode( array("html" => $html) ); 
?>

来自服务器的 JSON 字符串输出如下:

{"html":"<iframe frameborder=0 height=400 width=100% src='http:\/\/www.youtube.com\/watch?v=ozhtg6FuD8A'><\/iframe><noscript>JavaScript is required to load the comments.<\/noscript>\n<div class=\"inline-comments-container\" name=\"comments\">\n    <div id=\"inline_comments_ajax_handle\" class=\"last-child\" data-post_id=\"26\">\n    <div id=\"inline_comments_ajax_target\" style=\"display: none;\"><\/div>\n    <div class=\"inline-comments-loading-icon\">Loading Comments&#8230;<\/div>\n    <input type=\"hidden\" name=\"inline_comments_nonce\" value=\"c16a7993ab\" id=\"inline_comments_nonce\" \/>\n            <div class=\"inline-comments-content\">\n            <div class=\"inline-comments-p\">\n                <form action=\"javascript:\/\/\" method=\"POST\" id=\"default_add_comment_form\">\n                    <input type=\"hidden\" name=\"inline_comments_nonce\" value=\"c16a7993ab\" id=\"inline_comments_nonce\" \/>\n                    <span class=\"inline-comments-profile-pic-container\"><img alt='' src='https:\/\/graph.facebook.com\/FACEBOOKID\/picture?type=large' class='avatar avatar-32 photo' height='32' width='32' \/><\/span>                    <textarea placeholder=\"Press enter to submit comment&#8230;\" tabindex=\"4\" id=\"comment\" name=\"comment\" id=\"inline-comments-textarea\" class=\"inline-comments-auto-expand submit-on-enter\"><\/textarea>\n                    <!--<span class=\"inline-comments-more-handle\"><a href=\"#\">more<\/a><\/span>-->\n                    <div class=\"inline-comments-more-container\" style=\"display: none;\">\n                        <div class=\"inline-comments-field\"><input type=\"text\" tabindex=\"5\" name=\"user_name\" id=\"inline_comments_user_name\" placeholder=\"Name&#8230\" value=\"greeny\"  \/><\/div>\n                        <div class=\"inline-comments-field\"><input type=\"email\" required tabindex=\"5\" name=\"user_email\" id=\"inline_comments_user_email\" placeholder=\"Email&#8230\" value=\"email@example.com\"  \/><\/div>\n                        <div class=\"inline-comments-field\"><input type=\"url\" required tabindex=\"6\" name=\"user_url\" id=\"inline_comments_user_url\" placeholder=\"Website&#8230\" value=\"\" \/><\/div>\n                    <\/div>\n                <\/form>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>"}

调用JS函数togglePreview(4)时,收到如下错误码:

Uncaught SyntaxError: Unexpected token )

希望这是我忽略的非常简单的事情!

【问题讨论】:

  • 出于好奇,您为什么要传递包装在 json 中的 html?这似乎是不必要的。只需传递 html 即可完全避免此问题。
  • 根据jsonformatter.curiousconcept.com,您的 JSON 似乎是有效的。此错误来自 JS,但从您发布的代码来看,似乎没有任何问题。也许你的代码的其他部分?
  • 提供的代码对我来说看起来不错。 HTML 不包含脚本,因此这应该不是问题。只需仔细检查您的代码,检查您是否有正确的开括号和右括号
  • 错误信息从何而来? PHP 还是 JavaScript?哪一行,哪个文件?
  • Deadron - 我将返回额外的参数,因此最终需要将其包装在 JSON 中

标签: php javascript json


【解决方案1】:

可能是你打开了magic_quotes_runtime 吗?这可能会在您的 json 字符串中添加随机转义字符。

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多