2017-04-04 69 views
1

我有一個表格,保存在MySQL表中的一些數據,並做完後,該網站重定向到index.php頁面,我不想發生,我只是希望它留在同一頁面。PHP不會重定向後MySQL查詢

我有一些Ajax傳遞表單值:

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

     alert("incomeSave"); 

    $.ajax({ 

     type:"POST", 
     url: "actions.php?action=incomeSave", 
     data: "date=" + $("#incomeDate").val() + "&value=" + $("#incomeValue").val() + "&category=" + $("#incomeCategory").val() + "&subcategory=" + $("#incomeSubCategory").val() + "&account=" + $("#incomeAccount").val() + "&description=" + $("#incomeDescription").val(), 

     success: function(result) { 

     alert(result); 

     } 

    }) 

    }) 

然後執行查詢:

if ($_GET['action'] == "incomeSave") { 

    if (!$_POST['value']) { 

     echo "Valor vazio"; 

    } else { 

      mysqli_query($link, "INSERT INTO incomes (`user_id`,`income_date`,`income_value`,`income_category`,`income_subcategory`,`income_account`,`income_description`) VALUES ('1','". mysqli_real_escape_string($link, $_POST['date'])."','". mysqli_real_escape_string($link, $_POST['value'])."','". mysqli_real_escape_string($link, $_POST['category'])."','". mysqli_real_escape_string($link, $_POST['subcategory'])."','". mysqli_real_escape_string($link, $_POST['account'])."','". mysqli_real_escape_string($link, $_POST['description'])."')"); 

      echo "After SQL"; 

    } 

} 

我應該怎麼做這樣的頁面不重定向到的index.php?

+0

您確定數據正在保存在數據庫中嗎? –

+0

嘿羅納德,是的,查詢運行得很好,幸運的是! –

+2

一些Ajax大師可能會確認,但我認爲你錯過了像'preventDefault'或在代碼的javsacript部分返回false。這將防止'重新加載點擊'追加。 –

回答

0

如果您的HTML中有<form>標記,則任何<button><input type="button">將自動觸發重新加載。爲防止這種情況發生,您需要傳遞一個element參數並調用.preventDefault()方法。下面是你應該做的使用e作爲參數是什麼:

$("#incomeSave").click(function(e){ 
    e.preventDefault(); 
    alert("incomeSave"); 
    $.ajax({ 
     type:"POST", 
     url: "actions.php?action=incomeSave", 
     data: "date=" + $("#incomeDate").val() + "&value=" + $("#incomeValue").val() + "&category=" + $("#incomeCategory").val() + "&subcategory=" + $("#incomeSubCategory").val() + "&account=" + $("#incomeAccount").val() + "&description=" + $("#incomeDescription").val(), 
     success: function(result){ 
      alert(result); 
     } 
    }); 
}); 

而且,你的數據庫是開放的SQL注入,使用參數化的語句!

+0

這工作得很好!非常感謝Zeke!另外感謝SQL提示,我已經編程了幾個月作爲一種愛好,所以我不知道它,我一定會閱讀它並實施!祝一切順利! –

+0

我很高興。請參閱此問題以瞭解參數化語句以及更多內容:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1快樂編碼! – Zeke