2016-08-06 49 views
0

我一直試圖解決幾小時和幾小時現在的問題如下:我不能停止#myform行動後的重定向數據已成功提交給數據庫。我試過多種方法,但似乎沒有任何工作。我迫切需要幫助!試圖阻止表單提交後重定向(返回false和prevent.default不工作!)

的代碼:

HTML(mainview.php):

<div id="submitAccordion"> 

    <form id="myForm" action="userFiles.php" method="post"> 
     Name: <input type="text" name="accordionName" /><br /> 
     <input id="sub" type="submit" name="go" /> 

    </form> 

    <span id="result"> </span> 

    </div> 

的Javascript(mainview_script.js):

$("#sub").click(function() { 

     var data = $("#myForm :input").serializeArray(); 

     $.post($("#myForm").attr("action"), 
     data, function(info) { 
     $("#result").html(info); }) 
     }); 

     $("#myForm").submit(function() { 

     return false; 

     }); 

PHP(userFiles.php):

session_start(); 
require_once 'database.php'; 

if (isset($_SESSION['user_id'])) {  
    $sql = "INSERT INTO useraccordion (id, h3) VALUES (:id, :accordion)"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bindParam(':id', $_SESSION['user_id']); 
    $stmt->bindParam(':accordion', $_POST['accordionName']); 
    if ($stmt->execute()) { 
     echo "Succesfully inserted"; 
    } else { 
     echo "Sorry, there was an error"; 
    } 
} 

我試過ajax方法,prevent.defau等等,但沒有工作!

+1

使'輸入#sub'不'類型=「提交」 ',只是'type =「button」'。你都提交表單併發送一個Ajax請求。很可能js被執行得太晚了,已經在重定向的時候了。也刪除'$(「#myForm」)。submit(' – kecer

+0

使用窗口。重定向方法在ajax成功響應。 –

+0

使用窗口。在ajax成功響應中重定向方法 - 使用窗口? –

回答

0

首先,將你的$(「#myForm會「).submit(...)離開click事件,這是它自己的事情,然後,將e傳遞給該函數。所以它看起來像這樣...

$("#myForm").submit(function(e) { 
     e.preventDefault(); 
     return false; 
}); 
$("#sub").click(function() { 
    var data = $("#myForm :input").serializeArray(); 
    $.post($("#myForm").attr("action"),data, function(info) { 
     $("#result").html(info); 
    }); 
}); 

這將解決您的直接問題。我的想法是......甚至不要爲此使用表格。沒有理由。您通過Ajax發佈數據,因此沒有理由擁有可提交的表單。我會做這樣的事情...

HTML ...

<div id="form"> 
    <div class="form-item"> 
     <label for="name">Name:</label> 
     <input name="name" id="name" type="text" /> 
    </div> 
    <button id="sub">Submit Form</button> 
</div> 

的Javascript ...

$("#sub").click(function() { 
    var postData = {}; 
    //this is here to be dynamic incase you want to add more items.... 
    $("#form").find('input').each(function() { 
      postData[$(this).attr('name')] = $(this).val(); 
    }); 
    $.ajax({ 
     url: "YOUR URL HERE", 
     type: "POST", 
     data: postData, 
     success: function(msg) { 
      $("#result").html(msg); 
     } 
    }); 
}); 
+0

我記下了你的建議和你的建議,不使用表單完美工作!非常感謝!最後,6個小時後,我完成了這個問題。我很慚愧!感謝所有試圖幫助的人! –

+0

太棒了,很高興我能幫到你。祝你好運,JavaScript非常有趣,我相信你會做得很好。 –

2

要麼改變你的輸入類型button

<input id="sub" type="button" name="go" value="Submit"/> 

或者試試這個:

$("form").submit(function(e){ 
    e.preventDefault(); 
}); 
+0

更改按鈕爲: <按鈕類型=「提交」值=「提交」>提交 仍然無法正常工作。編碼<3 –

+0

仍然這將重定向頁面因爲你的按鈕類型是'submit' – jonju

+0

我試着直接複製並粘貼你的輸入按鈕,現在數據沒有提交到數據庫 –

0
$("#myForm").submit(function (event) { event.preventDefault(); }); 

即應停止提交

+0

我試過之前的preventDefault,沒有工作,現在沒有工作。但是,謝謝。 –

1

這足以防止子deafult行動:

$("#sub").click(function (e) { 

    e.preventDefault(); 

    var data = $("#myForm :input").serializeArray(); 

    $.post($("#myForm").attr("action"), 
        data, function(info) { 
         $("#result").html(info); }) 

});

0

如果是通過AJAX或jQuery的提交表單數據,那麼你應該改變你的輸入型形式「提交」按鈕「型

<input id="sub" type="button" name="go" value="go"/>