Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Gửi biểu mẫu ajax và ở trên cùng một trang không hoạt động

Biểu mẫu gửi đi và không ở trên cùng một trang do thuộc tính action trên biểu mẫu và nút gửi bình thường.

Dẫn đến .submit() của bạn phương thức bao gồm .preventDefault() có thể không được thông dịch sau khi html được tải.

Bạn có thể làm điều gì đó theo dòng sau:

<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>

Và javascript có thể là một cái gì đó dọc theo dòng:

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

Xem jsfiddle cho chính bạn.

Bạn có thể biết nó đang hoạt động vì bạn gặp lỗi bảng điều khiển không tìm thấy đích yêu cầu - 404 - mặc dù trang không được làm mới, bạn vẫn ở ngay vị trí của mình ... với một trang thích hợp để gửi nó hoạt động đầy đủ.

CHỈNH SỬA

Tôi đã sửa đổi cài đặt 'dữ liệu' trong ajax() gọi để các trường biểu mẫu được đặt dưới dạng chuỗi json thành biến POST [toDB].

Vì vậy, trong PHP của bạn, bạn sẽ làm:

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

Và bây giờ là $datas của bạn biến là một mảng kết hợp chứa tất cả các tên và giá trị trường biểu mẫu của bạn. Tôi không hiểu 100% về tuyên bố tiếp theo này, nhưng bạn có thể cần sử dụng stripslashes() của PHP trên dữ liệu POSTED trước khi sử dụng json_decode()

tức là:

//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();

Hy vọng điều đó sẽ giúp



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truyền một mảng tới một truy vấn SQL bằng cách sử dụng PreparedStatement của Java

  2. Sử dụng JDeveloper với Cơ sở dữ liệu MySQL và Cơ sở dữ liệu Oracle trên AWS RDS, Phần 2

  3. PHP:Lặp lại nhiều mảng và xây dựng truy vấn SQL INSERT

  4. Cách quản lý cơ sở dữ liệu với phpMyAdmin

  5. cách thay đổi định dạng ngày mặc định khi tạo bảng trong MYSQL