我會解釋我的代碼,然後在代碼片段後繼續解決問題:爲什麼我的php代碼不能在表單提交時觸發?
我有一個叫做「functions_questions」的窗體。提交時,以下代碼根據當前分數增加或減少我的sql數據庫中的一列(標題爲「分數」)(標題爲「答案」)。
<?php
$id = $_SESSION['id'];
if(isset($_POST['functions_question'])){
$res = $db->query("SELECT score FROM answers WHERE id=$id");
$data = $res->fetch_array();
if($data['score']<2)$db->query("UPDATE answers SET score = score+1 WHERE id=$id");
if($data['score']>1)$db->query("UPDATE answers SET score = score-1 WHERE id=$id");
}
?>
我也有以下的AJAX代碼,當提交表單時,它會自動更改div(id =「ajaxtest」)中的文本。當然,這樣做不會刷新頁面,因爲它使用AJAX。
<script type='text/javascript'>
$(document).ready(function() {
$('#questionform').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action') || window.location.pathname,
type: "POST",
data: $(this).serialize(),
success: function (data) {
ajaxtest.innerHTML = '"<?php echo $data['score']; ?>"';
},
});
});
});
</script>
最後,我有以下一段代碼,它顯示了標題爲「答案」的數據庫中標題爲「分數」的列中的值。
<?php
$resss = $db->query("SELECT * FROM answers WHERE id=$id");
$data = $resss->fetch_array();
var_dump($data['score']);
?>
當我提交我的表單時,我可以在數據庫中看到管理員的分數已更新。 AJAX代碼將div(ajaxtest)更改爲$ data ['score'],但會顯示更新前的前一個分數,而不是新更新的分數。我如何修改這個以便ajaxtest顯示更新的分數而不是非更新的分數?
表單本身名爲'functions_questions'?或者實際上是表單中輸入/按鈕/提交/其他表單字段的名稱? – jbafford
這是表單的名稱。 –
在HTML中,表單本身不是表單元素;它沒有價值,也沒有提交。您需要根據* is *提交的實際表單元素進行測試。 – jbafford