有人可以帮我解决一个小问题并解释一下会出现什么问题吗?我想要做的是从MySQL查询返回一个结果,并通过JSON传递它并显示该值。到目前为止我得到的是:
$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);
while($row = mysql_fetch_array($result)) {
$name = $row['first_name'];
}
我目前收到错误。
JSON.parse:JSON数据第1行第1列的意外字符
<div id="profile">
<div id="photo-frame">
<img class="circle" src="images/photo.jpg">
</div>
<h3 id="name"></h3>
</div>
<script type="text/javascript">
var text = <?php echo json_encode($name)?>;
var obj = JSON.parse(text);
$('#name').text(obj.name);
</script>
答案 0 :(得分:1)
您的SQL查询“SELECT first_name,last_name FROM user_profile”没有任何WHERE子句可能会返回一维或二维数组。 当您使用json_encode对结果进行编码时,JSON字符串格式对于一维和二维数组将是不同的。 这将导致Javascript Part 中的头痛。
因此,如果这是针对单个配置文件 - 请勿使用JSON
PHP
$qry = "SELECT first_name, last_name FROM user_profile WHERE id = $id";
$result = mysql_query($qry);
if (mysql_num_rows($results) == 1) {
while($row = mysql_fetch_array($result)) {
$name = $row['first_name'];
}
}
如果这是针对多个配置文件
PHP
$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);
if (mysql_num_rows($results) > 0) {
$jsonData = [];
$jsonData['profiles'] = mysql_fetch_array($result)
json_encode($jsonData, JSON_FORCE_OBJECT);
}
HTML,JAVASCRIPT AND JQUERY
<div id="profile"></div>
<script>
$(document).ready(function() {
var data = <?php echo $jsonData;?>;
$.each(data.profiles, function() {
$('#profile').append(
'<div id="photo-frame">' +
'<img class="circle" src="images/photo.jpg">' +
'</div>' +
'<h3 id="name">' + this.first_name + ' ' + this.last_name + '</h3>' +
'<hr/>'
);
}
}
</script>
答案 1 :(得分:0)
这不是json你在$ name(它的平面文本)中尝试:
var text = <?php echo $name; ?>;
但请记住,这不是一个好的编码风格php&gt; js&gt; html
删除&#34; obj&#34;部分。只是:
$('#name').text(text);
答案 2 :(得分:0)
我认为不需要在这里使用json
,你可以简单地说:
<?php
$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);
while($row = mysql_fetch_array($result)) {
$name = $row['first_name'];
}
?>
<div id="profile">
<div id="photo-frame">
<img class="circle" src="images/photo.jpg">
</div>
<h3 id="name"></h3>
</div>
<script type="text/javascript">
var text = '<?=$name;?>';
$('#name').text(text);
</script>