我正在尝试在我的主PHP文件中调用PHP脚本。我想用我的PHP脚本显示正在运行的SQL查询的结果。
我还希望包含动态显示结果/不刷新页面的可能性。
这是我到目前为止所尝试的,我是Jquery和AJAX的新手。提前谢谢!
工作小提琴:http://jsfiddle.net/52n861ee/ 多数民众赞成我想做什么,但当我点击它会告诉我错误:第23行("我在哪里使用json_encode
JQuery / AJAX部分:
<div id="map_size" align="center">
<script type="text/javascript">
//Display station information in a hidden DIV that is toggled
//And call the php script that queries and returns the results LIVE
$(document).ready(function() {
$(".desk_box").click(function() {
$id = $(this).attr("data")
$("#station_info_"+$id).toggle();
$.ajax({
url:"display_stationinfo.php",
type: "GET",
success:function(result){
$("#station_info_"+$id).html(result);
}});//end ajax
});//end click
});//end ready
</script>
</div> <!-- end map_size -->
display_station.php(我要调用的脚本):
<?php
include 'db_conn.php';
//query to show workstation/desks information from DB for the DESKS
$station_sql = "SELECT coordinate_id, x_coord, y_coord, section_name FROM coordinates";
$station_result = mysqli_query($conn,$station_sql);
//see if query is good
if($station_result === false) {
die(mysqli_error());
}
//Display workstations information in a hidden DIV that is toggled
while($row = mysqli_fetch_assoc($station_result)){
//naming values
$id = $row['coordinate_id'];
$x_pos = $row['x_coord'];
$y_pos = $row['y_coord'];
$sec_name = $row['section_name'];
//display DIV with the content inside
$html = "<div class='station_info' id='station_info".$id."' style='position:absolute;left:".$x_pos."px;top:".$y_pos."px;'>Hello the id is:".$id."</br>Section:".$sec_name."</br></div>";
}//end while loop for station_result
echo $_GET['callback'] . '(' .json_encode($html) . ')';
mysqli_close($conn); // <-- DO I NEED TO INCLUDE IT HERE OR IN MY db_conn.php SINCE IM INCLUDING IT AT THE TOP?
&GT;
答案 0 :(得分:1)
三个问题:
在您的PHP脚本中,您将html字符串视为对象或数组--- 您无法将字符串文字输出为JSON
< / LI>在您的JS脚本中,您正在处理“JSON”和“JSON”。 [object]好像它是一个字符串文字或一个html对象--- 你不能以这种方式输出JSON,你需要使用DOT表示法来访问它的数据。
即使您的PHP脚本似乎正在发送JSONP
,您仍未在jsonp
来电中指定dataType
ajax
。
假设您的所有PHP脚本都位于同一个域中,请将echo $_GET['callback'] . '(' .json_encode($html) . ')';
更改为:
echo $html;
这样您的PHP输出就与JS期望的一致。