Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अजाक्स फॉर्म जमा करें और उसी पेज पर बने रहें जो काम नहीं कर रहा है

फ़ॉर्म पर कार्रवाई विशेषता और सामान्य सबमिट बटन के कारण फ़ॉर्म सबमिट होता है और एक ही पृष्ठ पर नहीं रहता है।

जो आपके .submit() . पर ले जाता है .preventDefault() . सहित विधि एचटीएमएल लोड होने के बाद शायद व्याख्या नहीं की जा रही है।

आप इसकी तर्ज पर कुछ कर सकते हैं:

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

और जावास्क्रिप्ट कुछ इस तरह हो सकता है:

( 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() . में 'डेटा' की सेटिंग में बदलाव किया है कॉल करें ताकि फ़ॉर्म फ़ील्ड एक POST वैरिएबल [toDB] पर एक json स्ट्रिंग के रूप में सेट हो जाएं।

तो अपने PHP में आप करेंगे:

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

और अब आपका $datas वेरिएबल एक सहयोगी सरणी है जिसमें आपके सभी फॉर्म फ़ील्ड नाम और मान शामिल हैं। मैं इस अगले कथन पर 100% नहीं हूं, लेकिन आपको PHP के stripslashes() का उपयोग करने की आवश्यकता हो सकती है json_decode() . का उपयोग करने से पहले POSTED डेटा पर विधि

यानी:

//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. PHP Laravel:कोई कनेक्शन नहीं बनाया जा सका क्योंकि लक्ष्य मशीन ने सक्रिय रूप से इसे अस्वीकार कर दिया था

  2. कॉलम के लिए MAX मान लौटाते समय निम्नतम-आईडी पंक्ति हमेशा क्यों लौटाई जाती है?

  3. गैलेरा क्लस्टर संसाधन

  4. डोकर कंटेनर में चल रहे Intellij से mySql से कनेक्ट करने में असमर्थ - निर्दिष्ट डेटाबेस उपयोगकर्ता/पासवर्ड संयोजन अस्वीकार कर दिया गया है

  5. MYSQL प्रत्येक श्रेणी से 2 यादृच्छिक पंक्तियों का चयन करता है