jQuery и Codeigniter - отправьте форму с ajax и покажите результат в fancybox - PullRequest
2 голосов
/ 16 августа 2011

Я использую этот код для достижения того, что я сказал в заголовке:

$("#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, так что, думаю, это немного сужает исследование. Пост сделан правильно, я проверил с помощью firebug.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Я полагаю, что ошибка заключается в параметре url: base_url , поскольку в запросе содержатся недопустимые символы URL, вы можете показать значение base_url или вы имеете в виду <?=base_url();?>

1 голос
/ 17 августа 2011

Попробуйте жестко запрограммировать ваш URL, чтобы посмотреть, будет ли он работать. Кроме того, я не уверен, чего вы пытаетесь достичь с помощью части $(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;
});

Дай мне знать, работает ли это на тебя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...