【发布时间】:2020-12-06 19:22:47
【问题描述】:
我有一个 HMTL 表单,上面有 3 个字段,名字、姓氏和图像上传文件。按下提交时,它会调用以下 JS 脚本。
//main function to be called on submit
function processData() {
var firstName = document.querySelector('#first-name'),
lastName = document.querySelector('#last-name'),
imageUser = document.querySelector('#image-user');
var formSubmitData = {
'firstName': firstName.value,
'lastName': lastName.value,
'imageUser': imageUser.value
};
var dataString = JSON.stringify(formSubmitData);
if (navigator.onLine) {
sendDataToServer(dataString);
} else {
saveDataLocally(dataString);
}
firstName.value = '';
lastName.value = '';
imageUser.value = '';
}
//called on submit if device is online from processData()
function sendDataToServer(dataString) {
var myRequest = new XMLHttpRequest();
//new code added so data is sent to server
//displays popup message - data sent to server
myRequest.onreadystatechange = function() {
if (myRequest.readyState == 4 && myRequest.status == 200) {
console.log('Sent to server: ' + dataString + '');
window.localStorage.removeItem(dataString);
} else if (myRequest.readyState == 4 && myRequest.status != 200) {
console.log('Server request could not be completed');
saveDataLocally(dataString);
}
}
myRequest.open("POST", "write_test.php", true);
//Send the proper header information along with the request
myRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
myRequest.send(dataString);
alert('Sent: ' + dataString + ''); //remove this line as only for example
}
如您所见,它会向 php 页面发送一个 POST 请求。 “数据字符串”被编码为 JSON。
我使用以下 PHP 代码将数据发送到 SQL 服务器,但它所做的只是创建一个没有数据的空白记录,但它确实创建了一条新记录。
<?php
//TRYING NEW CODE TO EXTRACT DATA FROM dataString
$json = json_decode(file_get_contents("php://input"), true);
$data = json_decode($json, true);
echo '<pre>' . print_r($data, true) . '</pre>';
// INSERT into your contact table.
$sql="INSERT INTO contacts (firstName, lastName)VALUES('$firstName','$lastName')";
如何使用从表单提交的数据在 SQL 中创建记录??
【问题讨论】:
-
为什么要将结果解码两次?
-
您正在执行查询吗?你从
print_r()得到什么结果?可以肯定的是,您没有获得变量$firstName和$lastName,因此我们需要查看 JSON 来告诉您如何获得这些变量。 -
我认为第一行应该是唯一的解码行? $json 应该读取 $data?
-
您不能使用
.value来获取文件输入的值。您需要发布一个FormData,然后您可以使用$_POST和$_FILES获取发布的数据。
标签: javascript php sql json