0

私は3つのスクリプトを持っています

最初のものは、私が興味を持っている 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 コードが機能しているように見えますが、何らかの理由で実際には機能していません。

スクリプトで何か見た人はいますか?
タンクは事前にたくさん!

4

4 に答える 4

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);
    }
});

また、最初に渡すデータの配列を構築し、次に配列を渡し、1 つの 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 処理に干渉している可能性があります... 1 つのリクエストで配列を送信すると、location.reload を成功関数に入れることができます。

于 2013-10-06T22:03:56.290 に答える
0

$.ajaxin.eachは、一連の同時 AJAX リクエストを作成していて、おそらく失敗していることを意味します。一度に 1 つのみがアクティブになるように、AJAX リクエストをキューに入れる必要があります。他の人は並んで待つ必要があります。または、サーバー スクリプトを変更して、複数の項目を含む単一の要求を受け入れることもできます。

于 2013-10-06T21:56:52.290 に答える
0

これを試して:

data: { id_mensaje: value, accion: 'eliminar_mensaje'}

それ以外の:

data: 'id_mensaje='+value+'&accion=eliminar_mensaje' 
于 2013-10-06T21:57:48.113 に答える
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>
于 2013-10-06T22:02:40.407 に答える