2013-05-16 34 views
0

此问题已堵塞我的错误日志很长一段时间了。该功能正在做我想做的事情,但这个消息让我疯狂!未解析的SyntaxError:意外的标记)解析与HTML内的JSON字符串

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 protected]\" \/><\/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)

希望这件事很简单,我忽略了!

+0

出于好奇,你为什么传递html包装在json中?这似乎没有必要。只需传递html即可完全避免此问题。 – Deadron

+0

根据http://jsonformatter.curiousconcept.com/您的JSON似乎有效。这个错误来自JS,但是来自您发布的代码,似乎没有什么错误。也许你的代码的其他部分? – RaphaelDDL

+0

提供的代码看起来不错。 HTML不包含脚本,所以这不应该是一个问题。只需仔细检查你的代码,仔细检查你是否有正确的开口和右括号对 –

回答

0

难道是你有magic_quotes_runtime吗?这可能会添加随机转义字符到您的json字符串。