jQuery和Codeigniter - 使用ajax发布表单并在fancybox中显示结果

时间:2011-08-16 11:42:19

标签: jquery ajax codeigniter post fancybox

我正在使用此代码来实现我在标题中所说的内容:

$("#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附加到链接,所以我想这会缩小研究范围。帖子制作正确,我用萤火虫检查。

谢谢。

2 个答案:

答案 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知道这是否适用于你。