【发布时间】:2019-04-21 19:21:28
【问题描述】:
我想使用来自 PHP 的 AJAX 接收数据,它要求数据库提供一些数据。我从 AJAX 得到的只是NULL。
当我提醒结果(例如 data.name)时,它会显示 undefined。
HTML、AJAX 和 jQuery 在 index.php 中,而 PHP 在 edit.php 中。
我使用的 AJAX 请求...
$('div[data-toggle="edit"]').click(function() {
var editid = $(this).attr('id').replace('edit','');
$.ajax({
cache: false,
type: 'GET',
url: 'edit.php',
data: editid,
dataType: 'JSON',
}).done(function(data) {
$('#mainlabel').modal('show');
$('input[name=add_name]').val(data.name);
$('input[name=add_date]').val(data.date);
$('input[name=add_image]').val(data.image);
$('input[name=add_info]').val(data.info);
}).fail(function(jqXHR, message) {
alert(message);
});
});
...从这个 PHP 代码接收数据。
<?php
require_once('main.conf');
require_once('db.php');
$stmt = $con->prepare("SELECT * FROM datas d WHERE d.dataid = ?");
$stmt->bind_param("i", $_GET["editid"]);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
while ($row = $result->fetch_assoc()) {
$editname = $row["name"];
$editdate = date("Y-m-d", strtotime($row["date"]));
$editimage = $row["image"];
$editinfo = $row["additionalinfo"];
}
$return[] = array("name" => $editname,
"date" => $editdate,
"image" => $editimage,
"info" => $editinfo,
"getid" => $_GET["editid"]); //only for debugging
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>
当我通过edit.php?editid=547 手动调用此代码时,JSON 结果看起来应该如此。
0
name "Mike Minus"
date "2015-05-12"
image "employee.jpg"
info "some additional info"
getid "547"
有了预期的信息,我想填写一些输入框。
<div class="modal-body mx-3">
<div class="form-group">
<label for="add_name" class="col-form-label">Name:</label>
<input class="form-control validate" type="text" name="add_name" value="">
</div>
<div class="form-group">
<label for="add_name" class="col-form-label">Datum:</label>
<input class="form-control" type="date" name="add_date" size="8" value="">
</div>
<div class="form-group">
<label for="add_image" class="col-form-label">Bild:</label>
<input class="form-control" type="text" name="add_image" value="">
</div>
<div class="form-group">
<label for="add_info" class="col-form-label">Zusatzinfos:</label>
<input class="form-control" type="text" name="add_info" value="">
</div>
</div>
<div class="btn btn-info btn-sm" data-toggle="edit" id="edit547">
<i class="fa fa-pencil-square-o"></i>
</div>
我知道 SO 中有很多可能的解决方案。在 PHP 代码中使用 echo 而不是 return,适当的 application/json 标头或其他技术。在此之前没有任何帮助。
【问题讨论】: