有点紧张。我从JavaScript传递了一大块HTML - 它已经使用serialize函数从JQuery表单序列化 - 到我的Rails控制器。然而,Rails控制器看到了几个变量,它们将HTML的块作为其名称。
在JQuery方面,这是代码的样子:
$.ajax({
url: myURL,
type: 'get',
data : $('#spinForm').serialize(),
dataType: 'json',
success: function(data) {
if(data.response.preview) {
$('#channel_preview').html(data.response.preview);
} else {
$('#channel_preview').html("<strong>ERROR:</strong> " + data.response.error);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#json_error').html("<p><strong>Error:</strong> " + XMLHttpRequest.responseText + "<br />" + "Details: <br />" + errorThrown + "</p>");
}
});
这就是序列化数据的样子:
content_channel_credentials_id=1&title=This+is+my+title&content=%3Cp%3E%0D%0A%09This+is+my+content.%3C%2Fp%3E%0D%0A%3Cp%3E%0D%0A%09Here%26%2339%3Bs+a+little-known+secret+to+get+more+people+to+open+your+email+marketing+campaigns.%3C%2Fp%3E%0D%0A
我的Rails控制器只是从这里获取params [:content]变量,或多或少地传回来。但是,根据Rails(来自日志),这就是params变量的样子:
Parameters: {"act"=>"preview", "content"=>"<p>\r\n\tThis is my content.</p>\r\n<p>\r\n\tHere", "#39"=>nil, "s a little-known secret to get more people to open your email marketing campaigns.</p>\r\n"=>nil, "content_channel_credentials_id"=>"1", "title"=>"This is my title", "user_id"=>"1"}
看起来它正在解释解码后的&符号(用于替换引号,nbsps等)作为新参数,当然这是错误的,并且打破了序列化和URL编码的开始。我在这里缺少什么?
修改
我正在使用Ruby 1.9.2-p290到RVM和Rails 3.2.6