0

php次のようなループ を介していくつかのフォームを生成します。

for($i=0 ; $i<count($recibidos) ; $i++){  
    $remitente = consultav2("SELECT * FROM mensajes JOIN ".$recibidos[$i]['u_remitente']." ON mensajes.remitente = ".$recibidos[$i]['u_remitente'].".id_".$recibidos[$i]['u_remitente']."
                                                    WHERE mensajes.id_mensaje = '".$recibidos[$i]['id_mensaje']."';");
    echo"
        <tr>
            <form id='recibido".$i."'>
            <td>".$remitente[0]['nombre']." ".$remitente[0]['apellidos']."</td><td>".$remitente[0]['asunto']."</td>
            <td>".$remitente[0]['fecha_mensaje']."</td><td><input type='submit' value='Leer' /></td>
            <input type='hidden' name='accion' value='leer' />
            <input type='hidden' name='id_mensaje' value='".$remitente[0]['id_mensaje']."' />
            </form>
        </tr>
    ";

}  

結果のform金額は不明です。問題は、対応するボタンをクリックしたときformに送信されるようにしたいのですが、その部分に問題があります。私の働いていない提案はこのようなものです... jquery-ajaxsubmitjquery

$('[id=^recibido]').each(function(index, value){
  $(this).submit(function(){

    var datos = $(this).serialize();
    $.ajax({
        url: 'private/control_correo.php',
        type: 'post',
        data: datos,
        success: function(respuesta){
            $('#mostrar_mensaje').html(respuesta).show();
        },
        error: function(){
            $('#mostrar_mensaje').html('Error al intentar leer el mensaje').show();
        }
    });
    return false;
  });

}); 

誰でも私のjqueryコードに問題が見られますか? 助けていただければ幸いです。
前もって感謝します!

4

2 に答える 2

1

属性セレクターが正しくありません...=^

$('[id=^recibido]').each(function(index, value){
//-----^^--here

そのはず^= jQuery( "[attribute^='value']" )

$('[id^="recibido"]').each(function(index, value){

ここでは各関数は必要ありません..ちょうど

$('[id^="recibido"]').submit(function(){
  var datos = $(this).serialize();
    .......
   return false;
});

動作するはずです

于 2013-05-16T17:48:56.100 に答える
1

少しだけ最適化してみるのもいいかもしれません。まず、php で生成された項目にクラスを与えます。

<form id='recibido".$i."' class="recibidoForm">

次に、不要なものを取り除き、.each使用するだけです.on()

$('.recibidoForm').on('submit',function(e){
    var datos = $(this).serialize(),
        $mostrar_mensaje = $('#mostrar_mensaje');

    e.preventDefault();

    $.ajax({
        url: 'private/control_correo.php',
        type: 'post',
        data: datos,
        success: function(respuesta){
            $mostrar_mensaje.html(respuesta).show();
        },
        error: function(){
            $mostrar_mensaje.html('Error al intentar leer el mensaje').show();
        }
    });
});

これはあなたが望むことをするはずであり、オーバーヘッドははるかに少なくなります。また、このようなクラス セレクターを使用すると、属性セレクターを使用するよりもはるかに効率的です。

于 2013-05-16T17:51:37.923 に答える