2011-03-27 134 views
0

这可能听起来很奇怪,但我有一个JQ/AJAX/PHP的帖子问题。JQuery ajax php post problem

我的“代码”在那里,并在大多数情况下工作,除了1 - 当我试图通过过程传递标签。

我抓住这样

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

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

所以,如果var ed仅仅是“世界你好等等......”没有问题和数据处理,但如果var ed是像“你好世界等.... <img src="image.png">”的数据不处理 - stangely如果var ed是“你好世界等...... <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

设置警报(MSG)告诉我发生了什么(或没有)被发布到数据库。这是我看到上述问题的地方。即<img...>

建议纳入(或没有),请

+0

'var data ='content ='+ ed;' - better use'var data = {content:ed};' – ThiefMaster 2011-03-27 09:15:10

+0

@ThiefMaster - 抱歉,为什么? - 我在JQ上仍然是新手,全是 – 2011-03-27 09:16:58

+1

它确保你不必关心数据中的特殊字符,例如'&' - jQuery会将数组序列化为适当编码的字符串。 – ThiefMaster 2011-03-27 09:18:00

回答

0

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

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

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

为了自己的字符串化它,你将不得不使用encodeURIComponent()

"content=" + encodeURIComponent(ed); 

但它的简单得多,只让jQuery的为您代劳。

+0

{content:ed} - 对我不起作用,但“content =”+ encodeURIComponent(ed);是完美的。 – 2011-03-27 09:26:06

+0

它应该工作。查看实际的请求,查看您的PHP页面,查看查询字符串中的内容。假设'ed'只是一个字符串,那么'{content:ed}'将起作用,我保证。自己编码将是“做错了”。 – 2011-03-27 09:29:28

0

构建的请求参数时,不要使用字符串连接,否则将无法正确URL编码,如果参数包含一些特殊的字符也不会被正确接收。下面是正确的方法:

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