【问题标题】:JQuery ajax php post problemJQuery ajax php post问题
【发布时间】:2011-03-27 09:14:27
【问题描述】:

这听起来可能很奇怪,但我有一个 JQ/AJAX/PHP 发布问题。

我的“代码”就在那里,并且在大多数情况下都有效,除了 1 - 当我尝试通过流程传递标签时。

我这样抓取html

var ed = $('#fraRTE').contents().find('body #editarea').html(); 

#fraRTE 是 iframe 宽度,可编辑 div #editarea 因此 .contents().find('body #editarea').html()

所以如果var ed 只是“hello world etc....”则没有问题并且数据已被处理但如果var ed 类似于“hello world etc....<img src="image.png">”数据未处理 - 奇怪的是,如果 var ed 是“hello world etc....<img src="image.png">” - 文本和实际处理数据的图像之间没有间隙。

如果我在发帖前alert(ed),那么我会看到“正确”的字符串——不管它的内容是什么,像这样发帖:

var data = 'content='+ed;
$.ajax({ 
type: 'post', 
url:  'script.php',
data: data,
success: function(msg) { 
alert(msg);
}

});

我在 "data:data" 之前创建数据字符串,因为字符串中还有一些项目。

我的alert(msg)echo $_POST['content'];script.php 上设置

alert(msg) 告诉我已经(或尚未)发布到数据库的内容。这就是我看到上面提到的问题的地方。即包含(或不包含)<img...>

请提出建议

【问题讨论】:

  • var data = 'content='+ed; - 更好地使用var data = {content: ed};
  • @ThiefMaster - 抱歉,为什么? - 我在 JQ 还是新手,仅此而已
  • 它确保您不必关心数据中的特殊字符,例如& - jQuery 会为您将数组序列化为正确编码的字符串。

标签: php jquery ajax post


【解决方案1】:

jQuery 足够聪明,可以为您处理将您的请求数据转换为查询字符串。

$.ajax({
  type: 'post', 
  url:  'script.php',
  data: { content: ed },
  success: function(msg) { 
    alert(msg);
  }
});

您遇到的这个问题是数据未正确转义。

为了自己对它进行字符串化,您必须使用encodeURIComponent()

"content=" + encodeURIComponent(ed);

但是让 jQuery 为你做这件事要简单得多。

【讨论】:

  • { content: ed } - 对我不起作用,但 "content=" + encodeURIComponent(ed);很完美。
  • 它应该可以工作。查看点击您的 PHP 页面的实际请求并查看查询字符串中的内容。假设ed 只是一个字符串,那么{content:ed} 会起作用,我保证。自己编码将是“做错了”。
【解决方案2】:

在构造请求参数时不要使用字符串连接,否则它们将无法正确进行 url 编码,并且如果参数包含一些特殊字符,则无法正确接收。这是正确的方法:

var data = { content: ed };
$.ajax({ 
    type: 'post', 
    url:  'script.php',
    data: data,
    success: function(msg) { 
        alert(msg);
    }
});

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多