Php 如何从html页面中的另一个url访问json数据
下面是我返回json数据类型的php代码Php 如何从html页面中的另一个url访问json数据,php,jquery,json,Php,Jquery,Json,下面是我返回json数据类型的php代码 $sql="SELECT * FROM POST"; $result = mysqli_query($conn, $sql); $sJSON = rJSONData($sql,$result); echo $sJSON; function rJSONData($sql,$result){ $sJSON=array(); while ($row = mysqli_fetch_assoc($result)) { $
$sql="SELECT * FROM POST";
$result = mysqli_query($conn, $sql);
$sJSON = rJSONData($sql,$result);
echo $sJSON;
function rJSONData($sql,$result){
$sJSON=array();
while ($row = mysqli_fetch_assoc($result))
{
$sRow["id"]=$row["ID"];
$sRow["fn"]=$row["posts"];
$sRow["ln"]=$row["UsrNM"];
$strJSON[] = $sRow;
}
echo json_encode($strJSON);
}
此代码将返回
[{"id":"1","fn":"hi there","ln":"karan7303"},
{"id":"2","fn":"Shshhsev","ln":"karan7303"},
{"id":"3","fn":"karan is awesome","ln":"karan7303"},
{"id":"4","fn":"1","ln":"karan7303"},
{"id":"5","fn":"asdasdas","ln":"karan7303"}]
但是我怎样才能在html中访问这些数据,也就是说,我想要特定位置的特定数据,例如,我想要在我的div中显示'fn',在另一个具有另一个id的div中显示'ln'
在尝试其他东西之前,我试过这个
$.ajaxSetup({
url: 'exm1.php',
type: 'get',
dataType: 'json',
success: function(data){
console.log(data);
}
});
但它显示数据未定义,我不知道我做错了什么使用
$.ajax
而不是$.ajaxSetup
函数
下面是另一篇SO帖子的详细答案
$.ajax({
//要调用的文件名
url:“fetch_latlon.php”,
//方法用于调用服务器端代码,可以是GET或POST
键入:“获取”
//可选-要传递到服务器端代码的参数
数据:{
键1:‘值1’,
键2:‘值2’,
键3:“值3”
},
//从服务器端代码返回响应类型
数据类型:“json”
//当AJAX调用成功时执行
成功:功能(数据){
//取lat/lon
var lat=data.lat;
var lon=data.lon;
//在HTML中显示lat/lon
$('lat')。文本(lat);
$('lon')。文本(lon);
},
//当AJAX调用失败时执行
错误:函数(){
//TODO:在此处执行错误处理
log('获取lat/lon时发生错误');
}
});
如果您将$.ajaxSetup
(这是一种全局配置方法)与$.ajax
进行交换,您所拥有的应该可以正常工作。不过,您可以做一些重大改进
例如,您的PHP围绕rJSONData
返回的值执行一些奇怪的操作。这里有一些修正
function rJSONData($result) {
$sJSON = array();
while ($row = mysqli_fetch_assoc($result)) {
$sJSON[] = array(
'id' => $row['ID'],
'fn' => $row['posts'],
'ln' => $row['UsrNM']
);
}
return json_encode($sJSON);
}
当你叫它
header('Content-type: application/json');
echo rJSONData($result);
exit;
还要确保您没有通过echo
/print
或HTML(如
等)输出任何其他数据
在JavaScript中,通过使用
$.getJSON('exm1.php', function(data) {
console.info(data);
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error(jqXHR, textStatus, errorThrown);
});
将
$.ajaxSetup
交换为$.ajax
。此外,您的rJSONData
函数不会返回任何内容。我将echo json\u encode($strJSON)
更改为return json\u encode($strJSON)
尝试使用$.ajax
函数代替$.ajaxSetup
。请看这篇文章@SahilVerma抱歉,我在评论中添加了更多内容above@Phil我试过了,但仍然不起作用,我认为这不是问题所在,因为php文件无论如何都返回json数据。在我的例子中,它显示在获取lat/lon时发生了错误。这个错误是因为我复制了console.log行。您是否更改了代码的适当部分以匹配您的代码,如url
和数据
?是的,我复制了错误语句,实际上我只是复制了错误语句,以确保它是否给出了错误,或者在浏览器中访问您的PHP
文件,如果该文件正常工作并回显您的JSON
?标记了我的错误对于其他类似问题的指导,回答正确。给出解析错误parsererror“SyntaxError:Unexpected token<在JSON中的位置0在JSON.parse()在m.parseJSON(jquery.min.js:4)在Pc(jquery.min.js:4)在x(jquery.min.js:4)在XMLHttpRequest.b(jquery.min.js:4)(匿名)@exm.php:35 j@jquery.min.js:2 fireWith@jquery.min.js:2 x@jquery.min.js:4 b@jquery.min.js:4我也无法使用您的rJSONData函数,因为它在sJSON=[]上给出了错误;行,所以我使用了我的rJSONData函数上一个有效的函数,我发现错误出现在我的php中,我在开始时使用的是@SahilVerma,如果它不支持数组文本,听起来你使用的是非常旧的php版本。我已经更新了我的答案,使用了旧的语法。事实上,我对所有这些JSON Ajax php内容都是新手,所以不要我真的不知道新的和旧的东西
$.getJSON('exm1.php', function(data) {
console.info(data);
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error(jqXHR, textStatus, errorThrown);
});