我正在尝试使用Javascript和PHP在单击按钮时保存数据。
按钮单击:
DataSource ds = new ByteArrayDataSource(filePath.getBytes(), filePath.getContentType());
attachPart.setDataHandler(new DataHandler(ds));
attachPart.setFileName(filePath.getOriginalFilename());
attachPart.setDisposition(Part.ATTACHMENT);
savedata.php
var xhr = new XMLHttpRequest();
var url = "savedata.php";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
/*xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.rawText + ", " + json.convertedText);
}
};*/
var data = JSON.stringify({"rawText": rt, "convertedText": ct});
xhr.send(data);
在Db中:创建了一条记录,但是它是空的,因此每次我单击“保存”按钮时,都会创建1条记录,但是它是空的。上面的语法有什么问题?
谢谢!
答案 0 :(得分:2)
PHP不会将JSON请求解析为$ _POST数组本身。您应该在php中解析请求正文:
$request = json_decode(file_get_contents('php://input'), true);
$saverawText = $request['rawText'];
$saveConvertedText = $request['convertedText'];
或通过FormaData对象传递数据以进行请求:
var data = new FormData();
data.append("rawText", rt);
data.append("convertedText", ct);
xhr.send(data);
并且如前所述,将用户直接输入到sql中可能会导致sql注入。使用mysqli_real_escape_string可以逃避用户输入或PDO驱动程序,这有点复杂,但方法更可靠。
答案 1 :(得分:0)
您可以像这样发布您的值:
var xhr = new XMLHttpRequest();
var url = "savedata.php";
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
/*xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.rawText + ", " + json.convertedText);
}
};*/
var data = "rawText=" + rt + "&convertedText=" + ct;
xhr.send(data);