簡體   English   中英

提交返回錯誤,但仍提交表單-PHP,Javascript,AJAX,CodeIgniter

[英]Submit Return False, But Still Submit Form - PHP, Javascript, 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包裝在url和data上。

像這樣'onclick' => 'form_success_client(this); return false;'將您的JS onclick-event綁定到表單(而不是按鈕'onclick' => 'form_success_client(this); return false;' '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/");
       }
     });
}

未經測試

可能的解決方案。 我堅持你的代碼

<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_success_client(this); return false; 像那樣

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

不按按鈕

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

根據成功或返回的數據,您可以提交表格

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM