[英]AJAX POST with php and sql-query works only once
我想從列表中使用ajax,php和mysql刪除項目。 當我重新加載頁面時,AJAX請求可以正常運行。 但是AJAX第二次返回成功,但不會從數據庫中刪除該項目。 當我再次重新加載時,AJAX請求再次起作用。
這是我的html:
<ul>
<li>
Name1
<input type="hidden" name="job_id" value="1">
<input type="hidden" name="job_name" value="Name1">
<input type="hidden" name="job_delete_from_list" value="true">
<input type="submit" title="Löschen" class="btn-del-job" value="1">
</li>
<li>
Name2
<input type="hidden" name="job_id" value="1">
<input type="hidden" name="job_delete_from_list" value="Name1">
<input type="hidden" name="job_delete_from_list" value="true">
<input type="submit" title="Löschen" class="btn-del-job" value="1">
</li>
</ul>
我的AJAX看起來像這樣:
$( ".btn-del-job" ).click(function(e) {
var target = $(this);
var postData = $(this).closest("form").serialize();
var formURL = "ajax.test.php";
$.ajax({
type: 'POST',
url: formURL,
data: postData,
cache: false,
success: function(data){
console.log(data);
target.closest("li").hide("slow");
},
error: function(jqXHR, textStatus){
alert("Status: "+ jqXHR.status);
alert("textStatus: " + textStatus);
}
});
e.preventDefault();
});
這是我的PHP(我知道這是廢話和不贊成使用,不是我的錯):
if($_POST['job_deleting']) {
$jobId = $_REQUEST['job_id'];
$jobs = new Jobs;
$deleteJob = $jobs->__deleteJob($jobId);
}
這是功能:
public function __deleteJobFromList($jobId,$jobName) {
$jobs_query = "SELECT jobs FROM table WHERE id='$jobId'";
$jobs_result = mysql_query($jobs_query);
$jobs_row = mysql_fetch_assoc($jobs_result);
$jobs_imploded = implode(',', $jobs_row);
$jobs_exploded = explode(',', $jobs_imploded);
if(($key = array_search($jobName, $jobs_exploded)) !== false) {
unset($jobs_exploded[$key]);
}
$newJobs = implode(',', $jobs_exploded);
$job_query = "UPDATE table
SET jobs='$newJobs'
WHERE id='$jobId'";
$result = mysql_query($job_query) OR die(mysql_error());
}
我的數據庫如下所示:
table: id,name,jobs(Name1,Name2) // comma seperated list
我的錯誤在哪里?
預先感謝和最誠摯的問候
在執行服務器端的頁面上設置無緩存標題。
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
IE特別喜歡緩存Ajax返回。 您將必須使用最有力的無緩存頭來阻止它這樣做。
當不使用jQuery時,您還希望將一個隨機或時間戳的參數傳遞給Ajax,以欺騙IE使其不進行緩存。 您已經在使用執行相同功能的jQuery方法,但是可能仍然需要無緩存標頭。
問題只是html代碼。 抱歉,我沒有發布完整的html代碼。
這是一個構造我的html的foreach循環:
print '<ul>';
$first = true;
foreach ($jobs_exploded as $row ) {
if ($first) {
echo '<li>'.$row;
print '<form class="deleteJobFromList" method="post"><input type="hidden" name="job_id" value="'.$jobId.'">
<input type="hidden" name="job_name" value="'.$row.'">
<input type="hidden" name="job_delete_from_list" value="true">
<input type="submit" title="Löschen" class="btn-del-job" value="1">';
echo '</form></li>';
$first = false;
} else {
echo '<li>'.$row;
print '<form class="deleteJobFromList" method="post"><input type="hidden" name="job_id" value="'.$jobId.'">
<input type="hidden" name="job_delete_from_list" value="'.$row.'">
<input type="hidden" name="job_delete_from_list" value="true">
<input type="submit" title="Löschen" class="btn-del-job" value="1">';
echo '</form></li>';
}
};
echo '</ul></p>'."\n";
其他部分已損壞。 兩個字段具有相同的名稱。 有時人們看不見樹木的樹木。
反正謝謝你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.