成功后的XMLHttpRequest操作

时间:2017-09-06 12:57:40

标签: javascript php ajax

我有一个表单,表单中有文本字段和一个画布,它预先形成一个标记键。

link to the form

我使用pod install来发送表单。 我遇到的麻烦是确认表单已插入数据库。

我认为ajax和我使用的php之间存在冲突,以便将表单数据插入到mysql db中 我怎么能这样做?

这是js文件的内容

ajax

这是 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); ?> php函数内容

insert_data()

我知道如果public function insert_data($name, $file, $idNo){ $query = $this->dbh->prepare("INSERT INTO signitures (name, file, idno) VALUES(?, ?, ?)"); $query->bindparam(1, $name); $query->bindparam(2, $file); $query->bindparam(3, $idNo); try { $query->execute(); if ($query) { echo "success!! "; } else { echo "Failure conncting db!"; } } catch (PDOException $e) { die($e->getMessage()); } } 返回$query->execute();而不是插入数据。 如何通知用户数据确实已插入数据库? 即使将用户传递到新页面也是一种选择。 实际上,将用户重定向到新页面会很棒!

2 个答案:

答案 0 :(得分:2)

您好需要在try {最后}添加函数insert_data,以成功发送回ajax脚本作为响应,这很简单。

$success['success'] = "You request just sending to the server ...";
echo json_encode($success);

在你的faction ajax

            xhr.onload = function(data) { 
                console.log(data);
                console.log(data.success);
            };

你需要适应,这个方法向你展示了如何将数据发送给JS。

答案 1 :(得分:1)

您也可以在&#34; body&#34;内发送回复。键值对,并将成功/错误指示放在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);
};

请参阅: Set Response Status Code

或: http://php.net/manual/de/function.http-response-code.php

代码说明: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes