Отправить возврат неверно, но все еще отправить форму - PullRequest
1 голос
/ 19 ноября 2010

Это, вероятно, будет звучать задом наперед. Мне нужно, чтобы форма отправила возвращаемое значение false, но все еще отправляю форму.

У меня есть форма, перетаскиваемая на страницу через ajax (функция загрузки jquery), и при отправке я бы хотел отображать графику и некоторый текст в одном div, а не перенаправлять страницу.

Это моя кнопка отправки (codeigniter):

<?php $attributes = array('class' => 'button', 'onclick' => 'form_success_client(); return false;', 'name' => 'submit'); echo form_submit( $attributes, 'Save'); ?>

и в html:

<input type="submit" onclick="form_success(); return false;" class="button" value="Save" name="submit">

и функция javascript, которая загружает сообщение об успехе:

 function form_success_client() { // form success
    $('.contentarea').load("/mm/index.php/site/form_success_client/");
 }

Это все работает нормально, но неудивительно, что оно не отправляет форму. Я знаю, что правильный способ сделать это - передать отправку формы в jquery, но я не уверен, как это сделать. Если возможно, можно сделать быстрое исправление (пока у меня не будет времени, чтобы найти лучшее решение), однако все предложения приветствуются.

Спасибо!

ОТВЕТ:

Это то, что сработало для меня, просто небольшая правка ответа Мэгги:

function form_success_client(obj) {
    $.ajax({
       type: 'POST',
       url: $(obj).attr('action'),
       data: $(obj).serialize(),
       success: function(msg){
         $('.contentarea').load("/mm/index.php/site/form_success_client/");
       }
     });
     return false;
}

Обратите внимание, что $ () упаковывает объект для URL и данных.

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

привязать событие JS onclick к форме (а не к кнопке) следующим образом 'onclick' => 'form_success_client(this); return false;'

и измените свою функцию на

function form_success_client(obj) {
    $.ajax({
       type: "POST",
       url: obj.attr("action"),
       data: obj.serialize(),
       success: function(msg){
         $('.contentarea').load("/mm/index.php/site/form_success_client/");
       }
     });
}

непроверенных

1 голос
/ 19 ноября 2010

Возможное решение.Я придерживаюсь вашего кода

<input type="submit" onclick="form_success_client(this); return false;" class="button" value="Save" name="submit">

function form_success_client( i ) {
   formData = $(i).parents('form').serialize();
   $.post( "/mm/index.php/site/form_success_client/", formData, function(loaded) { $('.contentarea').append(loaded) }, 'html' );
}

РЕДАКТИРОВАТЬ: И да, как сказала Мэгги, вы должны привязать form_success_client(this); return false;, как это

<form onsubmit="form_success_client(this); return false;">

не к кнопке

0 голосов
/ 19 ноября 2010

Вы можете использовать jquery .post, .get или .ajax

на основе УСПЕХА или возвращенных данных. Вы можете отправить форму

http://api.jquery.com/jQuery.get/

http://api.jquery.com/jQuery.post/

http://api.jquery.com/jQuery.ajax/

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