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内部服务器错误。如果请求保持挂起状态,后端可能会在循环中死锁或其他情况。。。