这可能听起来很奇怪,但我有一个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
建议
答案 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为你做这件事要简单得多。