我正在做一个考试项目。我坚持这一点,我希望你们中的某个人可以帮助我(我是意大利人,很抱歉我的英语不好!)。 我必须使用PHP脚本查询存储在phpmyadmin中的现有数据库。然后,需要使用jquery脚本解析查询结果并将其打印到HTML页面。 这是PHP脚本:
<?php
$con = mysql_connect('localhost', 'root', '');
if (!$con) {
die('Errore di connessione: ' . mysql_error());
}
mysql_select_db("progetto_lpw", $con);
$sql="SELECT denominazione FROM farmacia";
$result = mysql_query($sql) or die(mysql_error());
$num=mysql_numrows($result);
while($row = mysql_fetch_array($result)){
print json_encode($row['denominazione']);
print "<br />";
}
?>
我已经测试了通过浏览器调用它的PHP脚本,它可以工作。
然后,我用这个jquery脚本解析结果(使用这个组合是项目的要求):
$("#button").click(function(){
$.getJSON('json.php', function(data) {
$.each(data, function(index,value){
$("#xx").append("<p>"+value+"</p>")
})
})
})
问题是:当我打开HTML页面并单击firefox上的按钮时,consolle会说“找不到元素”,指的是PHP脚本。
“xx”是打印元素的div的id。
错误在哪里?
感谢大家。
答案 0 :(得分:2)
替换以下代码
while ($row = mysql_fetch_array($result)) {
print json_encode($row['denominazione']);
print "<br />";
}
使用以下代码并尝试
$rows = array();
while ($row = mysql_fetch_array($result)) {
$rows[] = $row['denominazione'];
}
header('Content-type: application/json');
echo json_encode($rows);
HTML
<button id="button">Fetch JSON</button>
<div id="xx"></div>
JS
$("#button").click(function() {
$.getJSON('json.php', function(data) {
$.each(data, function(index, value) {
$("#xx").append("<p>" + value + "</p>")
});
});
});
来自json.php
的回复应采用以下格式
["AGGERI","ALCHEMICA 1961"]
你的代码不起作用的原因是它产生的输出如下:
"foo"<br />
"bar"<br />
这无效JSON。要有效,您必须不在那里有HTML <br />
(这是JSON,而不是HTML),并且您必须在要返回的元素之间使用逗号。
json_encode
将正确处理格式化数组。
jsFiddle Demo 发帖并获取json
输出
答案 1 :(得分:0)
'print'与'echo'的工作方式不同。至少我发送带有来自php的echo的JSON包。 你能替换它吗?
// in php
echo json_encode($row['denominazione']);
// in jquery script, best to place "<br />" tag here
$("#xx").append("<p>"+value+"</p><br />")