Обновление таблицы базы данных с помощью AJAX
Я работаю над проектом по созданию системы автосалона, и я хочу сделать страницу, где штатный пользователь может редактировать автомобиль, а затем просит его подтвердить, хочет ли он сохранить изменения или нет. До сих пор я чувствую, что прошел все шаги правильно, но я не уверен, так как я все еще новичок в AJAX, я настроил свой код, чтобы запросить подтверждение у пользователя, и если пользователь подтвердит, что он обновляет информацию о транспортном средстве. Это мой код.:-
клиентский
<pre>function confirm_edit(){ if(confirm("Save changes?") === true){ var vehicleNo = document.getElementById("vID").value; var Manufacturer = document.getElementById("Manufacturer").value; var Model = document.getElementById("Model").value; var modelYear = document.getElementById("modelYear").value; var State = document.getElementById("State").value; var Color = document.getElementById("Color").value; var Type = document.getElementById("Type").value; var salePrice = document.getElementById("salePrice").value; var rentPrice = document.getElementById("rentPrice").value; var Stock = document.getElementById("Stock").value; var Description = document.getElementById("Description").value; var i = document.getElementById("i").files[0]; $.ajax({ url: 'ajax.php', method: 'post', data: {vehicleNo: vehicleNo, Manufacturer : Manufacturer, Model: Model, Model_Year: modelYear, State: State, Color: Color, Type: Type, Sale_Price: salePrice, Rent_Price: rentPrice, Stock: Stock, i: i, text: Description},//$('form').serialize(), contentType: false, processData: false, success: function(data){ console.log(data); } }); return true; }else{ return false; } } </script>
Серверный
<pre><?php extract($_POST); if(isset($Manufacturer)) { if (trim($Manufacturer) == "") echo "<span style = 'color:red'> Missing Vehicle Manufacturer </span>"; else if(trim($Model) == "") echo "<span style = 'color:red'> Missing Vehicle Model </span>"; else if(trim($Model_Year) == "") echo "<span style = 'color:red'> Missing Vehicle Model Year </span>"; else if(trim($State) == "") echo "<span style = 'color:red'> Missing State of Vehicle </span>"; else if(trim($Color) == "") echo "<span style = 'color:red'> Missing Color of Vehicle </span>"; else if(trim($Sale_Price) == "") echo "<span style = 'color:red'> Missing the Sale Price of the Vehicle </span>"; else if(trim($Rent_Price) == "") echo "<span style = 'color:red'> Missing the Rent Price of the Vehicle </span>"; else if(trim($Stock) == "") echo "<span style = 'color:red'> Missing Stock of Vehicle </span>"; else if(trim($text) == "") echo "<span style = 'color:red'> Missing Description of Vehicle </span>"; else { if ((($_FILES["i"]["type"] == "image/gif") || ($_FILES["i"]["type"] == "image/jpeg")|| ($_FILES["i"]["type"] == "image/pjpeg") || ($_FILES["i"]["type"] == "image/gif") || ($_FILES["i"]["type"] == "image/png")) && ($_FILES["i"]["size"] < 200000000000000)) { if ($_FILES["i"]["error"] > 0) echo "Return Code: " . $_FILES["i"]["error"] . "<br />"; else { if (file_exists("Vehicles/" . $_FILES["i"]["name"])){ die($_FILES["i"]["name"] . " already exists <br/>"); echo "<a href = 'add_movie(1).php' align = 'center'> <p style='text-align:center'>Add another Movie </p></a>"; //echo $_FILES["i"]["name"] . " already exists <br/>"; } else { move_uploaded_file($_FILES["i"]["tmp_name"], "Vehicles/" . $_FILES["i"]["name"]); try{ require('connection.php'); $Description = nl2br($text); $img = $_FILES['i']['name']; $usql = "UPDATE vehicles SET License_Plate_N = '$License_Plate', Manufacturer = '$Manufacturer', Model = '$Model', Model_Year = '$Model_Year', State = '$State', Color = '$Color', Type = '$Type', Sale_Price = '$Sale_Price', Rent_Price = '$Rent_Price', Stock = '$Stock', Image = '$img', Description = '$Description'"; echo "<span style = 'color:green'><p style='text-align:center'> Vehicle edited successesfully!</p></span> <br/>"; $update = $db->exec($usql); $db = null; } catch(PDOException $e){ die($e->getMessage()); } } } } else echo "size or type does not match."; } echo "<a href = 'Edit_Vehicle.php' align = 'center'> <p style='text-align:center'>Edit another Vehicle </p></a>"; echo "<p style='text-align:center'>Add Hyper link here to go to main page </p> ";//"<a href = 'MainPage.php' align = 'center'> Go back to mainpage </a>" Use Hyperlink to go to main page } ?>
Что я уже пробовал:
Похоже, что он работает нормально, но я не уверен, я попытался проверить свой журнал консоли, чтобы увидеть, получаю ли я какие-либо ошибки, но данные отправляются нормально, и журнал консоли не показывает никаких ошибок.
Kornfeld Eliyahu Peter
Кажется, все хорошо - как вы уже сказали... Возникает вопрос: хранятся ли данные в БД?
Qassim Ali
Нет, ничего не происходит, что странно. Я пытался отправить его несколько раз, но он никогда не обновляется в базе данных, я постараюсь перепроверить, возможно, что-то пропустил.
Kornfeld Eliyahu Peter
Я могу обнаружить некоторые проблемы в коде JQuery...
* метод должен быть типа
* данные должны быть сериализованы в строку
* удалить processData
Qassim Ali
Я предположил, что, поскольку я отправляю информацию на сервер, метод должен быть post, но если это не так, не могли бы вы подробнее остановиться на первых двух пунктах и связать меня, возможно, с каким-то источником о том, почему и как их делать?
Kornfeld Eliyahu Peter
Имя параметра не "метод", а " тип " - значение правильно post
Kornfeld Eliyahu Peter
В параметре data передайте не объект, а строку...
Qassim Ali
Я попытался выполнить все шаги, о которых вы мне рассказали, и вот как выглядит мой клиентский ajax-запрос
$.ajax({ url: 'ajax.php', type: 'post', data: JSON.stringify({VehicleNo: VehicleNo, Manufacturer : Manufacturer, Model: Model, Model_Year: modelYear, State: State, Color: Color, Type: Type, Sale_Price: salePrice, Rent_Price: rentPrice, Stock: Stock, i: i, text: Description}),//$('form').serialize(), contentType: false, success: function(data){ console.log(data); } });
база данных по-прежнему не обновляется.
Kornfeld Eliyahu Peter
Теперь возникает вопрос: поступают ли данные на сервер? Что содержит $_POST?
Qassim Ali
Поэтому, когда я добавляю JSONG.stringify к своим данным, он не отображается в консоли, но когда я удаляю его, он появляется. Разве я не сериализую свои данные в строку должным образом?
Kornfeld Eliyahu Peter
Что вы подразумеваете под "консолью"? Вы попробуйте преобразовать в строки' способ вне контекста AJAX-вызов?
Qassim Ali
Вы имеете в виду сделать объект вне вызова ajax, а затем использовать его внутри? можете ли вы написать мне пример того, как это будет выглядеть и как получить доступ к нему на стороне php, потому что я не знаком с объектами в PHP.
Qassim Ali
Так что я еще немного повозился и похоже проблема вот в чем
contentType: false, processData: false,в моем клиентском коде. Когда я включаю его, данные не отправляются по какой-либо причине, но если я удаляю его, я получаю сообщение об ошибке (TypeError: 'slice' вызывается для объекта, который не реализует интерфейс Blob). Я надеюсь, что эта информация может прояснить некоторые вещи.
Laxmidhar tatwa technologies
я = документ.метода getElementById("я").файлы[0]; преобразование в байт или bytestring потом отправить
Qassim Ali
Как я могу преобразовать его в байт?