AJAX формы отправить с MooTools - PullRequest
0 голосов
/ 05 января 2012

У меня есть сайт, который я построил еще в 2007 году ... Я сделал кое-что из ajax, и он работал нормально. Сегодня владелец сайта связался со мной и сказал, что заметил, что формы больше не работают.

Я пошел посмотреть, и консоль показала, что при отправке получала ошибку: Отказался устанавливать небезопасный заголовок «Соединение»

Я предположил, что это должно быть изменение в безопасности браузера или что-то в этом роде, поскольку ни один код не изменился, и все работало нормально, когда я в последний раз смотрел на него ... Итак, я немного погуглил и обнаружил, что другие упоминают об этом, и Решение было обновить mootools .. Я сделал, и что головная боль, весь API изменился .. Так что я все исправил, и казалось, что все должно работать, но это не так.

$('application_form').addEvent('submit', function(e) {
  new DOMEvent(e).stop();

  updateText("Sending...");
  var progress_bar = $('bar');
  progress_bar.empty().addClass('ajax-loading');
  this.send({
    update: progress_bar,
    onSuccess: function(e) {
      progress_bar.removeClass('ajax-loading');
      (function() { mySlide.slideOut() }).delay(1500);
    }
  });
});

Это приводит к тому, что ajax-запрос идет к URL [объектному объекту], а не к реальному сценарию .php, указанному в атрибуте действия application_form ... Я попытался указать параметр URL, чтобы запретить переход к [объектному объекту ] но ничего хорошего ...

1 Ответ

0 голосов
/ 05 января 2012

Вот jsfiddle с рабочим примером, основанным на вашем.
Не должно быть слишком сложно обновить ваш.

http://jsfiddle.net/K976E/3/

Вот HTML-код на случай, еслиjsfiddle исчезает.

<!DOCTYPE HTML>
<html>
    <body>
        <form id='application_form' action='http://www.scoobydoo.com/cgi-bin/scoobysnack'>
            Count of Scooby Snacks: <input type='text' size='5' /><br />
            <input id='submitButton' type='submit' value='Rut Roh Shaggy!'/>            
        </form>
        <div id='bar' style='margin-top:20px'>
            Yikes!
        </div>

    </body>
</html>

А вот javascript (место в onLoad):

new Form.Request('application_form', 'bar', {
    onSend: function(){
    updateText("Sending...");
    var progress_bar = $('bar');
    progress_bar.empty().addClass('ajax-loading');
        $('submitButton').set('value', 'Sending the form...').set('disabled', true);
    },
    onComplete: function(){
    var progress_bar = $('bar');
    progress_bar.removeClass('ajax-loading');
    //(function() { mySlide.slideOut() }).delay(1500);        
    }
});


function updateText(txt){
    // do something here...
}

... и нет, я не включил кнопку отправки вOnComplete ...

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