带有 php 和 sql-query 的 AJAX POST 只能工作一次
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";
其他部分已损坏。两个字段具有相同的名称。有时人们看不到树木的木头。
无论如何谢谢你!
相关文章:
- Jquery FadeIn FadeOut 只工作一次
- jQuery滚动功能只工作一次
- iOS鼠标中心绑定只工作一次
- mongoose.js Model.remove在循环中只能工作一次
- Regex拆分-工作一次
- EventListener只能工作一次
- jQuery animate只在单击时工作一次
- data th JS每页只工作一次
- Jquery选择选项并获取只工作一次的更改值(页面加载时)
- CSS 类在验证时只工作一次
- Chrome扩展程序:浏览器操作单击按钮工作一次
- 单击仅工作一次
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- Yelp API、OAuth和Angular与JSONP只工作一次
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- evaluatteJavaScript()只工作一次
- orderBy筛选器只能工作一次
- Jquery事件只工作一次
- Javascript切换的内容函数只能工作一次
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后