JQuery ajax php发布问题

时间:2011-03-27 09:14:27

标签: php jquery ajax post

这可能听起来很奇怪,但我有一个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 .... {{ 1}}“如果<img src="image.png">是”hello world etc .... var ed,则数据不会被处理 - 文本和图像之间没有实际处理数据的间隙。

如果我在帖子之前<img src="image.png">,那么我会看到“正确的”字符串 - 不管它的内容是什么,发布如下:

alert(ed)

});

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

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

上的echo $_POST['content'];设置

警报(msg)告诉我什么(或没有)发布到数据库。这是我看到上面提到的问题的地方。即包含(或不包含)script.php

建议

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

jQuery足够智能,可以处理将请求数据转换为查询字符串。

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

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

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

"content=" + encodeURIComponent(ed);

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