将JS结果放在php变量中
下面的脚本将任何图像转换为基本64,我试图将转换后的字符串放入一个php变量,然后将其插入到我的数据库中。将JS结果放在php变量中
我的JS
function uploadFile() {
if (this.files && this.files[0]) {
var FR= new FileReader();
FR.addEventListener("load", function(e) {
document.getElementById("img").src = e.target.result;
document.getElementById("b64").innerHTML = e.target.result;
});
FR.readAsDataURL(this.files[0]);
}
}
document.getElementById("inp").addEventListener("change", readFile);
我的HTML
<input id="inp" type='file'>
<p id="b64"></p>
<img id="img" height="150">
我所想要实现的地方,我在id为p标签现在显示的结果=” b64中的一个php变量$ varImage。
.innerHTML = e.target.result;
我在网上阅读,我只能用AJAX完成,但我不知道如何使用ajax,如果它的情况?或者它可以以不同的方式完成?
没有Ajax,您可以将生成的值隐入输入值,只需发送的形式,让PHP脚本处理的形式会得到它在$ _POST ['b64']变量。
HTML
<input id="inp" type='file'>
<input type="hidden" id="b64" value="">
<img id="img" height="150">
JS
function readFile() {
if (this.files && this.files[0]) {
var FR= new FileReader();
FR.addEventListener("load", function(e) {
document.getElementById("img").src = e.target.result;
document.getElementById("b64").value = e.target.result;
});
FR.readAsDataURL(this.files[0]);
}
}
是的,AJAX是上传最简单的方法之一,下面是一个简单的方法来展示您可以做的最简单的方法。
首先,包括jQuery的通过把这个在你的HTML的<head>
(使用下面的CDN或它的本地下载)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
现在,回到你的(JavaScript)的代码。假设base64字符串位于变量result
中。我们可以发送一个POST
请求到PHP服务器(在这个例子中是upload.php
),结果在请求体中。
$.ajax({
method: "POST",
url: "upload.php",
data: { img: result }
});
现在,在upload.php
,这是所有你需要:
<?php
if (isset($_POST['img'])) {
$varImage = $_POST['img'];
} else {
print 'No image sent!';
}
?>
而且你现在可以使用$varImage
为任何你想要的。
由于js脚本在客户端计算机上执行,并且php在服务器(主机)计算机上执行。您必须将数据从您的js发送到您的php。 当然,您可以使用jquery,但不是唯一的解决方案。如果你的jquery不是用jquery舒服的话,那么你还有另一个solution。
有一个AJAX请求的例子:
$.post("mysite/create",
{ "data": JSON.stringify({'id': id})},
function (data, status) {
console.log("Data: " + data + "\nStatus: " + status);
});
});
而且有天然的js的XmlHttpRequest的示例:
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "mysite/create", true);
xhttp.send();
}
最后解决方案是使用一种形式:
<form method="post" action="mysite/create">
<input name="data">
</form>
无论哪种方式,您需要经过该步骤才能将数据保存到数据库。
如果没有ajax
,则无法将变量从.js发送到.php。
JS
$.ajax({
url: "",
data: {
name: "value"
}
})
PHP
$data = htmlspecialchars($_GET["name"]); // return "value";
你可以使用像jQuery库,请参阅http://api.jquery.com/jquery.ajax/的描述和exampes如何使用ajax。 – user1915746
@ user1915746我应该使用ajax吗?或者它可以以不同的方式完成? – mirvatJ
您也可以使用'