Mysql
 sql >> база данни >  >> RDS >> Mysql

Изпратете ajax формуляр и останете на същата страница, не работи

Формулярът се изпраща и не остава на същата страница поради атрибута за действие във формуляра и нормалния бутон за изпращане.

Което води до вашия .submit() метод, включително .preventDefault() вероятно също не се интерпретира след зареждане на html.

Бихте могли да направите нещо подобно на това:

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

И javascript може да бъде нещо от рода на:

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

Вижте jsfiddle за себе си.

Можете да кажете, че работи, защото получавате конзолна грешка, че местоназначението на заявката не е намерено - 404 - въпреки че страницата не се опреснява, вие оставате точно там, където сте...с подходяща страница, която да изпратите, тя работи напълно.

РЕДАКТИРАНЕ

Промених настройката на „данни“ в ajax() извикване, така че полетата на формуляра да бъдат зададени като json низ към POST променлива [toDB].

Така че във вашия PHP бихте направили:

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

А сега вашите $datas променливата е асоциативен масив, съдържащ имената и стойностите на всички ваши полета на формуляра. Не съм 100% в това следващо твърдение, но може да се наложи да използвате stripslashes() на PHP метод върху ПУБЛИКУВАНИТЕ данни, преди да използвате json_decode()

т.е.:

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

Надявам се това да помогне



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да оптимизирате изгледите на MySQL

  2. Код на грешка:1136 Броят на колоните не съвпада с броя на стойностите в ред 1) вътре в sp

  3. Използвайте обвързан параметър няколко пъти

  4. mysql_fetch_array while цикъл. Как работи?

  5. Не мога да се свържа с RDS mysql DB от Wordpress на екземпляр на Amazon linux EC2