我正在使用此代码来实现我在标题中所说的内容:
$("#design-preview").click(function() {
e.preventDefault();
var data = $(this).closest("form").serializeArray();
$.ajax({
type : "POST",
cache : false,
url : base_url,
data : data,
success : function(data) {
$.fancybox(data, {
'type' : 'iframe',
'width' : 340,
'height': 500
});
}
});
return false;
});
问题是,我从firebug得到这个:
"NetworkError: 400 Bad Request - http://domain.info/%3C!DOCTYPE%20html%20PUBLIC"
它以某种方式将表单的结果添加到链接中。 有谁知道为什么会这样?也许是一个更好的建议?
编辑:ajax帖子的响应是一个HTML页面。 HTML代码通过fancybox附加到链接,所以我想这会缩小研究范围。帖子制作正确,我用萤火虫检查。
谢谢。
答案 0 :(得分:2)
我猜错误在于 url:base_url 参数,因为请求包含无效的网址字符,您可能会显示base_url值,或者您的意思是
<?=base_url();?>
答案 1 :(得分:1)
尝试对您的网址进行硬编码,看看它是否有效。此外,我不确定您使用代码的$(this).serializeArray()
部分尝试完成的任务。该方法用于序列化表单的输入。我怀疑你是否“点击”表单来触发提交。
我愿意打赌您点击表单中的按钮,根据表单的字段显示某些内容......这就是我的示例所假设的内容。
试试这个:
$("#design-preview").click(function() {
var data = $(this).parent('form').serializeArray();
$.ajax({
type : "POST",
cache : false,
url : 'http://domain.info/foo',
data : data,
success : function(data) {
$.fancybox(data, {
'type' : 'iframe',
'width' : 340,
'height': 500
});
}
});
return false;
});
Lemme知道这是否适用于你。