我可以在通过Javascript加载时更改图片网址,但是当我将相同的代码粘贴到insert.php时,提交按钮后它不会更改图片网址。
在加载时,此代码有效:
<div id="demo">
<img src="https://www.w3schools.com/images/w3schools_green.jpg" alt="W3Schools.com" id="change">
</div>
<script>
var txt = '{"url":"https://www.w3schools.com/images/w3schools_green.jpg"}'
var obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = "<img src=\"" + obj.url + "\">";
</script>
但是这个系统不起作用:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>Insert</title>
</head>
<body>
<img src="https://www.w3schools.com/images/w3schools_green.jpg" alt="W3Schools.com" id="change">
<div id="demo">
<img src="https://www.w3schools.com/images/w3schools_green.jpg" alt="W3Schools.com" id="change">
</div>
<script>
var txt = '{"url":"https://www.w3schools.com/images/w3schools_green.jpg"}'
var obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = "<img src=\"" + obj.url + "\">";
</script>
<label>Like</label>
<input type="text" id="name">
<button type="submit" id="button">SAVE</button>
<script>
$(document).ready(function(){
$("#button").click(function(){
var name=$("#name").val();
$.ajax({
url:'insert.php',
method:'POST',
data:{
name:name,
},
success:function(data){
document.getElementById('change').src=data.imgFile;
document.getElementById("demo").innerHTML = "<img src=\"" + obj.url + "\">";
}
});
});
});
</script>
</body>
</html>
<?php
$conn = new mysqli('localhost', 'root', 'mypassword', 'loveme');
$name=$_POST['name'];
$sql="INSERT INTO `data` (`id`, `name`) VALUES (NULL, '$name')";
if ($conn->query($sql) === TRUE) {
echo '{"success":"true", "imgFile":"../2iD7U.jpg", "url":"ppp"}';
echo ' var txt = \'{"url":"ppp"}\'
var obj = JSON.parse(txt);';
}
else
{
echo "failed";
}
?>
PHP脚本应仅返回JSON,而不是JavaScript代码。
In the AJAX call, specify
dataType: 'json'
and the JSON will be parsed.