提交返回错误,但仍然提交表单 - PHP,Javascript,AJAX,CodeIgniter

时间:2010-11-19 16:18:05

标签: php javascript jquery ajax codeigniter

这可能听起来倒退了。我需要一个表单提交return 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,但我不知道该怎么做。如果可能的话,可以快速解决问题(直到我有时间对更好的解决方案进行排序),但所有建议都表示赞赏。

谢谢!

解答:

这对我有用,只是对Maggie的回答进行了轻微编辑:

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;
}

注意在网址和数据上包装obj的$()。

3 个答案:

答案 0 :(得分:2)

将JS onclick-event绑定到表单(而不是按钮),就像这样 '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 :(得分:1)

可能的解决方案。我坚持你的代码

<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;">

不是按钮

答案 2 :(得分:0)

您可以使用jquery .post,.get或.ajax

根据SUCCESS或返回的数据,您可以提交表格

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

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

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