我无法将数据显示在页面中,尽管它出现在console.log中。
这是我对api.php的查询,页面在同一个文件夹中。
$Sub = $_GET['id'];
$stmt = $conn->prepare("SELECT id, name FROM variables WHERE id=:id");
$stmt->bindParam(':id', $Sub, PDO::PARAM_STR);
try {$stmt->execute();} catch(PDOException $e){ echo errorHandle($e);}
$rs2 = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($rs2);
工作正常并产生
{"id":"1","name":"James"} on api.php
这是.js和身体
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js">
</script>
</head>
<body>
<p><div id="shoot">shoot</div>
<div id="output"></div>
< script >
$(document).ready(function() {
$("#shoot").click(function()
{
$.ajax({
type: "GET",
url: 'api.php?id=1',
data: "?id=1",
dataType: 'json',
success: function(data)
{
var id = data[0];
var vname = data[1];
$('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname);
console.log(data);
}
});
});
});
</script>
</body>
</html>
我回来了
id:未定义的名称:undefined
我已尝试过$ ajax和其他任何更改,但页面中没有显示任何内容。 帮助将不胜感激
答案 0 :(得分:2)
需要注意的几件事
data
。您应该在url
参数中引用该文件,并传递data
参数中的所有相关值。?
。data.id
而不是data[0]
来访问它。
AJAX调用看起来应该是这样的。
$.ajax({
type: "GET",
url: 'api.php',
data: {id:1},
dataType: 'json',
success: function(data) {
var id = data.id;
var vname = data.name;
$('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname);
console.log(data);
}
});
这假定您已设置PHP标头以使用
将其返回为JSONheader("Content-Type: application/json");
使用echo json_encode(..)
。
data
参数中传递的值可以通过多种方式进行格式化,在此示例中我选择了{id:1}
,但"id=1"
也是有效的。< / p>
答案 1 :(得分:0)
在您的$ .ajax调用中,不传递数据:&#34;?id = 1&#34;。通过这样做,您对响应进行了硬编码。所以删除该行。这应该可以解决回复AJAX的问题。
此外,成功:功能(数据),您获取的数据需要以这种方式访问:
data.id和data.vname。