Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kirim formulir ajax dan tetap di halaman yang sama tidak berfungsi

Formulir terkirim dan tidak berada di halaman yang sama karena atribut tindakan pada formulir, dan tombol kirim normal.

Yang mengarah ke .submit() . Anda metode termasuk .preventDefault() mungkin juga tidak diinterpretasikan setelah html dimuat.

Anda dapat melakukan sesuatu seperti ini:

<html>
  ...
  <body>
  ...
    <form id="formA" action="test.php" method="post" enctype="multipart/form-data">
      <input id="commentData" name="commentData" type="text" />
      <input type="submit" value="toDb" id="toDB" name="toDB" />
    </form>
  ...
  </body>
  <script>
   ...script here...
  </script>
 </html>

Dan javascript bisa menjadi sesuatu di sepanjang baris:

( function( $ )
  {
    var submit = $( 'input[id=toDB]' );
    $( submit ).on
    (
      'click',
      function( event )
      {
        event.preventDefault();
        var form = $( this ).parent();

        // Get form fields
        var data = $( form ).serializeArray(), obj = {}, j = 0;
        for( var i = 0; i < data.length; i++ )
        {
          if( data[i].name in obj )                                                                  
          {
            var key = data[i].name + '_' + j;
            obj[key] = data[i].value;
            j++;
          }
          else
          {
            obj[data[i].name] = data[i].value;
          }
        };

        // Make AJAX request
        $.ajax
        (
          {   
            url: $( form ).attr( 'action' ),    
            type: 'POST',
            data: 'toDB=' + JSON.stringify( obj ),    
            success: function( data, textStatus, xhr )
            {
              // Do something with data?
              ...    
              alert( 'ok' );    
            }
          }
        );
      }
    );
  }( jQuery )
);

Lihat jsfiddle untuk diri sendiri.

Anda dapat mengatakan itu berfungsi karena Anda mendapatkan kesalahan konsol bahwa tujuan permintaan tidak ditemukan - 404 - meskipun halaman tidak disegarkan, Anda tetap berada di tempat Anda berada...dengan halaman yang tepat untuk dikirim, itu berfungsi sepenuhnya.

EDIT

Saya mengubah pengaturan 'data' di ajax() panggil sehingga bidang formulir ditetapkan sebagai string json ke variabel POST [toDB].

Jadi di PHP Anda, Anda akan melakukan:

$datas = json_decode( $_POST['toDB'], true );

Dan sekarang $datas . Anda variabel adalah array asosiatif yang berisi semua nama dan nilai bidang formulir Anda. Saya tidak 100% pada pernyataan berikutnya, tetapi Anda mungkin perlu menggunakan stripslashes() PHP metode pada data POSTED sebelum menggunakan json_decode()

yaitu:

//Connect to database server
mysql_connect( "localhost", "user", "" ) or die ( mysql_error() );
mysql_select_db( "test" ) or die( mysql_error() );
$strSQL = "SELECT * FROM comments order by RAND() LIMIT 5";
$rs = mysql_query( $strSQL );

if( !$rs ) 
{
  echo 'Could not run query ' . mysql_error();
  exit;
}

$dt1=date("Y-m-d");

if( isset( $_POST['toDB'] ) )
{
  $datas = json_decode( stripslashes( $_POST['toDB'] ), true );
  $dataA = $datas['commentData'];
  $sql = "INSERT INTO comments( id, comment, datum )VALUES( DEFAULT, '" . $dataA . "', '" . $dt1 . "' );";
  $result=mysql_query( $sql );
}
mysql_close();

Semoga membantu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan Logis MySql Oleh

  2. kueri mysql untuk menggabungkan 3 kueri dalam 1 tabel sambil rata-rata

  3. Menangkap pengecualian yang salah

  4. Kiri Gabung Tabel dan Gema di Tabel

  5. tabel penguncian kueri mysql