我有三个脚本
第一个动态生成一个表单,其中包含几个输入,其值包含我所在的id_mensaje。我想删除与id_mensaje相关的mysql注册表。 我宁愿给你看剧本
1.- correo.php
<div id='eliminar_mensaje'><a href='#'>Eliminar</a> </div>
<form>
<input class='elim_msg' type='checkbox' value='id_mensaje_".$i."' />
... more inputs whith same class name
</form>
2.- correo.js
$('#eliminar_mensaje a').on('click', function(){
$('#loading').show();
$('.elim_msg').each(function(i,e){
var value = $(e).val();
var checked = $(e).prop('checked');
if(value != 'ok' && checked == true){
$.ajax({
url: 'private/control_correo.php',
type: 'POST',
data: 'id_mensaje='+value+'&accion=eliminar_mensaje'
});
} else {
//do nothing
}
});
location.reload(true);
return false;
});
3.- control_correo.php
...} else if(isset($_POST['accion']) AND $_POST['accion'] == 'eliminar_mensaje'){
consultav2("DELETE FROM destinatarios WHERE id_mensaje = '".$_POST['id_mensaje']."';");
consultav2("DELETE FROM mensajes WHERE id_mensaje = '".$_POST['id_mensaje']."';");
}
当你点击在eliminar_mensaje div上的链接时,它看起来javascript代码有效,但它确实没有任何我无法找到的原因。
你们有没有看到剧本中的任何内容? 坦克提前很多!
答案 0 :(得分:1)
您需要在ajax调用中使用成功和错误参数来确定请求是否成功:
$.ajax({
url: 'private/control_correo.php',
type: 'POST',
data: 'id_mensaje='+value+'&accion=eliminar_mensaje',
success: function(message) {
// do things on success
alert(message);
},
error: function(message) {
// ajax request failed (not necessarily the server side processing failed)
alert(message);
}
});
你还应该先看一下构建一个数据数组,然后传入一个数组,然后只进行一次ajax调用。
$('#eliminar_mensaje a').on('click', function(){
$('#loading').show();
var ajaxArray = {};
$('.elim_msg').each(function(i,e){
var value = $(e).val();
var checked = $(e).prop('checked');
if(value != 'ok' && checked == true){
ajaxArray.push( e ); // add contents of e to array
} else {
//do nothing
}
});
// done with finding data, do ajax
$.ajax({
url: 'private/control_correo.php',
type: 'POST',
data: {
dataArray: ajaxArray
},
success: function(message) {
// do things on success
alert(message);
},
error: function(message) {
// ajax request failed (not necessarily the server side processing failed)
alert(message);
}
});
// your server side script loops through the passed array and does things there, only one ajax request
});
另外,location.reload()的用途是什么?这也发生在点击上,可能会干扰你的ajax处理...如果你发送一个带有一个请求的数组,你可以将你的location.reload放入成功函数。
答案 1 :(得分:0)
$.ajax
中的 .each
表示您正在制作一系列同步的AJAX请求,这些请求可能会失败。您需要对AJAX请求进行排队,以便在任何给定点上一次只能激活一个。其他人需要排队等候。或者,您可以修改服务器脚本以接受包含多个项目的单个请求。
答案 2 :(得分:0)
试试这个:
data: { id_mensaje: value, accion: 'eliminar_mensaje'}
而不是:
data: 'id_mensaje='+value+'&accion=eliminar_mensaje'
答案 3 :(得分:0)
这对你来说很好用
<script>
$(document).ready(function(){
$('#eliminar_mensaje a').on('click', function(){ alert('hj')
$('#loading').show();
$('.elim_msg').each(function(i,e){
var value = $(e).val();
var checked = $(e).prop('checked');
if(value != 'ok' && checked == true){
$.ajax({
url: 'private/control_correo.php',
type: 'POST',
data: 'id_mensaje='+value+'&accion=eliminar_mensaje'
});
} else {
//do nothing
}
});
});
});
</script>
<input type="button" class="clik_for_fetch" value="dsfds"/>
<div id='eliminar_mensaje'><a href='javascript:void(0)'>Eliminar</a> </div>
<form>
<input class='elim_msg' type='checkbox' value='id_mensaje_".$i."' />
... more inputs whith same class name
</form>