Javascript 成功后的XMLHttpRequest操作
我有一个表单,表单中有文本字段和画布,可以作为签名垫 我使用Javascript 成功后的XMLHttpRequest操作,javascript,php,ajax,Javascript,Php,Ajax,我有一个表单,表单中有文本字段和画布,可以作为签名垫 我使用ajax发送表单。 我所遇到的困难是确认表单已插入数据库 我认为,为了将表单数据插入mysql数据库,我使用的ajax和php之间存在冲突 我怎么做 这是js文件的内容 var fd = new FormData(document.forms["form1"]); var xhr = new XMLHttpRequest(); xhr.o
ajax
发送表单。
我所遇到的困难是确认表单已插入数据库
我认为,为了将表单数据插入mysql数据库,我使用的ajax和php之间存在冲突
我怎么做
这是js文件的内容
var fd = new FormData(document.forms["form1"]);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload_data.php', true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
alert(percentComplete + '% uploaded');
}
};
xhr.onload = function() {
};
xhr.send(fd);
这是upload_data.php
文件的内容:
<?php
require 'inc/inc.php';
$upload_dir = "upload/";
$img = $_POST['hidden_data'];
$idNo = $_POST['idno'];
$name = $_POST['fname'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = $upload_dir . mktime() ."-" . $idNo . ".png";
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
$suc = new Form;
$suc->insert_data($name, $file, $idNo);
?>
我知道如果$query->execute()代码>返回插入数据之前的true
。
如何通知用户数据确实已插入数据库?
甚至将用户传递到新页面也是一个选项。
实际上,将用户重定向到一个新页面将是非常棒的 您好,您需要在函数中添加insert_data on the try{at end}一个成功的回音,以发送到ajax脚本作为响应,非常简单
$success['success'] = "You request just sending to the server ...";
echo json_encode($success);
在你的爱好中
xhr.onload = function(data) {
console.log(data);
console.log(data.success);
};
您需要调整,这个方法向您展示了如何将PHP数据发送到JS。您好,您需要在函数中添加insert_data on the try{at end}作为响应发送到ajax脚本的成功回音,非常简单
$success['success'] = "You request just sending to the server ...";
echo json_encode($success);
在你的爱好中
xhr.onload = function(data) {
console.log(data);
console.log(data.success);
};
您需要进行调整,此方法向您展示如何将数据PHP发送到JS。您还可以在“body”键值对中发送响应,并将成功/错误指示放入HTTP状态代码中:
$success["body"] = "You request just sending to the server ...";
header("HTTP/1.1 200 OK", true, 200);
并以js格式接收:
xhr.onload = function(data) {
console.log(data.status);
console.log(data.body);
};
见:
或:
代码说明:
您还可以在“body”键值对中发送响应,并将成功/错误指示放入HTTP状态代码中:
$success["body"] = "You request just sending to the server ...";
header("HTTP/1.1 200 OK", true, 200);
并以js格式接收:
xhr.onload = function(data) {
console.log(data.status);
console.log(data.body);
};
见:
或:
代码说明:
可能重复我不懂PHP,因此我无法提供实现细节,但概念很简单。PHP查询完数据库后,让它向请求插入的客户端发送响应。您可以简单地使用HTTP状态代码,例如,如果成功插入,则使用200。然后阅读JavaScript中的响应头。可能是我不懂PHP的副本,因此我无法提供实现细节,但概念很简单。PHP查询完数据库后,让它向请求插入的客户端发送响应。您可以简单地使用HTTP状态代码,例如,如果成功插入,则使用200。然后阅读JavaScript中的响应标题。谢谢,我尝试了您的建议,由于某种原因,在按下submit按钮后页面会刷新,而我无法在控制台上看到数据。导致这种情况的原因是什么?另外,在“源”选项卡中检查js文件时,运行没有进入xhr.onload
块,因此我无法获取console.log(数据)代码>对象数据。这是什么原因造成的?为什么我不使用此代码来执行ajax请求?因为这是一个旧代码,而不是跨浏览器。我建议使用jquery中的ajax库或。。。例如,为您提供了跨浏览器ajax请求的最佳选择。谢谢,我尝试了您的建议,出于某种原因,在按下提交按钮后页面会刷新,而我无法在控制台上看到数据。导致这种情况的原因是什么?另外,在“源”选项卡中检查js文件时,运行没有进入xhr.onload
块,因此我无法获取console.log(数据)代码>对象数据。这是什么原因造成的?为什么我不使用此代码来执行ajax请求?因为这是一个旧代码,而不是跨浏览器。我建议使用jquery中的ajax库或。。。例如,为您提供了跨浏览器ajax请求的最佳选择。谢谢。像这样试过try{$query->execute();if(!$query){echo“Failure conncting db!”;}else{$success[“body”]=“您请求只发送到服务器…”;header(“HTTP/1.1200 OK”,true,200);}
但是由于某种原因我无法理解。运行没有进入xhr.onload块,因此我无法获取console.log(数据);对象数据。是什么原因造成的?嗯,如果后端崩溃,它最终会发送一个状态码,比如500内部服务器错误。如果请求保持挂起状态,后端可能会在循环中死锁或其他情况…谢谢。像这样试过try{$query->execute();if(!$query){echo“Failure conncting db!”;}else{$success[“body”]=“您请求只发送到服务器…”;header(“HTTP/1.1200 OK”,true,200);}
但是由于某种原因我无法理解。运行没有进入xhr.onload块,因此我无法获取console.log(数据);对象数据。是什么原因造成的?嗯,如果后端崩溃,它最终会发送一个状态码,比如500内部服务器错误。如果请求保持挂起状态,后端可能会在循环中死锁或其他情况。。。