【问题标题】:"Uncaught SyntaxError: Unexpected token ILLEGAL" When I send html through AJAX“Uncaught SyntaxError: Unexpected token ILLEGAL”当我通过 AJAX 发送 html 时
【发布时间】:2012-08-23 17:59:54
【问题描述】:

我有一个可编辑的 iframe,可用作博客的帖子输入。 我正在使用 jQuery 从 iframe 的正文中检索 html:

function sharePost (feedNumber)
{
  var postBox = $("#ifrNewPost" + feedNumber).contents(); // Gets iframe content
  var postContent = $('body', postBox).html(); // Gets iframe body

  var params = { post: encodeURI(postContent) };

  // Send to server
  $.ajax({

    type:'POST', 
    url: 'script/post.php', 
    data: params, 

    success: function(response) {
      $(document).append(response);
    }

  });
}

几乎可以完美运行,我的问题是,当我将某些内容粘贴到 iframe 中时,似乎在我粘贴的开头添加了一个换行符,然后在提交时,脚本失败: "Uncaught SyntaxError: Unexpected token ILLEGAL"

我尝试了 encodeURI 和 encodeURIComponent 都无济于事。当我在粘贴后查看页面的代码时,我粘贴的内容没有明显的变化,它似乎只是在它之前添加了一个新行。关于如何将 HTML 安全地发送到我的 php 脚本的任何解决方案?

【问题讨论】:

  • 我认为$('body', postBox).html(); 无效。
  • 您使用的是哪个浏览器? Chrome 通常会更详细地说明错误的位置
  • Chrome 说 jquery.js:614 所以它一定是 html 中的某些东西导致了错误。如果我不粘贴,数据是通过罚款发送的,你有更可靠的方式来获取body数据吗?
  • 哦,如果我使用 .text() 得到它,它会做同样的事情
  • 您正在尝试通过 jQuery 获取 iframe 的内容?

标签: php javascript jquery ajax


【解决方案1】:

问题在于 php 代码到底返回了什么! 只需运行一个正则表达式将任何换行符更改为 br 就可以了!

$post = preg_replace("/(\r\n|\n|\r)/", "<br />", $post);

【讨论】:

    【解决方案2】:

    使用nl2br

    $post = nl2br($post);
    

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 2012-01-30
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2012-09-22
      • 1970-01-01
      相关资源
      最近更新 更多