AJAX dan PHP untuk Memasukkan Berbilang Input Borang ke dalam Pangkalan Data
Dalam artikel ini, kami akan meneroka cara menggunakan AJAX dan PHP untuk masuk berbilang input bentuk ke dalam pangkalan data. Memandangkan anda baru menggunakan AJAX, tumpuan kami adalah untuk memahami konsep dan aplikasi AJAX dalam konteks ini.
Untuk bermula, mari pertimbangkan contoh borang berikut yang dijana dalam PHP:
<?php echo "<form method='post'>"; $i=1; while($i <= $num_to_enter){ $form_output .= "First Name: <input>
Borang ini menjana berbilang set medan input secara dinamik berdasarkan pemilihan pengguna ('$num_to_enter'). Matlamat kami ialah menggunakan AJAX untuk menghantar data daripada medan input ini ke skrip PHP untuk sisipan pangkalan data.
Mengenai fungsi AJAX yang anda berikan, isu utama adalah dengan penggunaan aksara '&' yang salah apabila menggabungkan rentetan data. Selain itu, gelung 'semasa' di luar panggilan AJAX mengakibatkan penghantaran data kosong.
Berikut ialah versi diperbetulkan fungsi AJAX:
function MyFunction(){ var i = 1; var x = $('#num_to_enter').val(); // Get the number of form sets var dataString = ''; // Initialize an empty data string // Iterate through the number of form sets while (i <= x){ // Concatenate the data string using JavaScript's += operator dataString += "fname[" + i + "]=" + $('#fname[' + i + ']').val() + "&"; dataString += "lname[" + i + "]=" + $('#lname[' + i + ']').val() + "&"; dataString += "email[" + i + "]=" + $('#email[' + i + ']').val() + "&"; i++; } // Remove the trailing '&' character from the data string dataString = dataString.substr(0, dataString.length - 1); // Send the data via AJAX to the 'process.php' script $.ajax({ url: 'process.php', type: 'POST', data: dataString, // The concatenated data string is passed here success: function(data){ // Handle the response from 'process.php' // Your code goes here }, complete: function(){ // Perform tasks after the AJAX request is complete // Your code goes here } }); }
Dalam fungsi yang diperbetulkan ini, kami menggabungkan dengan sewajarnya data ke dalam rentetan tunggal ('dataString') dan hantarkannya sebagai parameter 'data' dalam AJAX call.
Untuk skrip PHP ('process.php'), kita boleh mempunyai sesuatu seperti ini:
<?php if($_SERVER['REQUEST_METHOD'] === 'POST') { // Parse the data from the POST request parse_str($_POST['data'], $formData); // Extract the individual data sets $fnames = $formData['fname']; $lnames = $formData['lname']; $emails = $formData['email']; // Initialize the success flag $success = true; // Perform the database insertions for ($i = 0; $i < count($fnames); $i++) { // Insert into database // ... // Check if any insertion failed if(!...){ $success = false; break; } } // Return the success flag as JSON echo json_encode(array('success' => $success)); } ?>
Dalam skrip PHP ini, kami menghuraikan data POST, mengekstrak individu set data, dan gelung melaluinya untuk melaksanakan sisipan pangkalan data. Jika mana-mana sisipan gagal, bendera 'kejayaan' ditetapkan kepada palsu. Akhir sekali, kami mengembalikan bendera 'kejayaan' sebagai JSON kepada panggilan AJAX.
Pendekatan ini membolehkan anda menyerahkan berbilang set borang secara tidak segerak melalui AJAX dan mengendalikan sisipan pangkalan data dalam skrip PHP, memberikan pengalaman pengguna yang lebih lancar tanpa menyegarkan halaman.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan AJAX dan PHP untuk menghantar berbilang input borang dengan cekap ke pangkalan data tanpa muat semula halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!