通过 Ajax 解析 PHP 文件获取的 JSON 数据时出现问题
Posted
技术标签:
【中文标题】通过 Ajax 解析 PHP 文件获取的 JSON 数据时出现问题【英文标题】:Problem parsing through Ajax a JSON data fetched by PHP file 【发布时间】:2021-12-24 18:50:46 【问题描述】:我无法从我的 php 文件中解析 JSON 日期
"date":"20\/12\/2022","result":"£13000.00","medias":"BBC","country":"UK"
但是当我尝试解析它并在 console.log 中查看数据时 - 它是空的
请帮忙
我的 Ajax 函数
function ajax_call()
const style2 = $("#style1").val();
const radio_btn = $('input[name="drone"]:checked').val();
if(style2=="")
document.getElementById("error").innerhtml = "Error: Please enter style code !";
return false;
$.ajax(
type: 'post',
url: "t.php",
data: styles: style2 , country: radio_btn,
dataType: "json",
success: function(data)
var jsondata = $.parseJSON(data);
console.log(jsondata);
)
我的 PHP
<php
header('Content-type: application/json');
$date = "20/12/2020";
$end_result = "£13000.00";
$medias = "BBC";
$country = "UK";
$sortjson = array('date' => $date,
'result' =>iconv('Windows-1252', 'UTF-8', $end_result),
'medias' => $medias,
'country' => $country
);
echo json_encode($sortjson, JSON_UNESCAPED_UNICODE);
?>
【问题讨论】:
你很可能没有在等待承诺的答复。 console.log(data) 的输出是什么,你可能会看到它是一个字符串 也可以尝试将此添加到 Ajax 调用 dataType: "text" 或 dataType: "json" 我在 console.log 中没有任何输出我在 devtool 中有响应 ajax 调用的响应,它返回我想要的东西。 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。 【参考方案1】:我认为PHP代码中有错字,您需要将第一行从:
<php
到
<?php
如果第一行是<php
,则输出将不是有效的 JSON。
完整的PHP代码:
<?php
header('Content-type: application/json');
$date = "20/12/2020";
$end_result = "£13000.00";
$medias = "BBC";
$country = "UK";
$sortjson = array('date' => $date, 'result' =>iconv('Windows-1252', 'UTF-8', $end_result), 'medias' => $medias, 'country' => $country);
echo json_encode($sortjson, JSON_UNESCAPED_UNICODE);
?>
另外,我不是 100% 确定你需要 iconv 调用,你可以试试下面的代码:
<?php
header('Content-type: application/json');
$date = "20/12/2020";
$end_result = "£13000.00";
$medias = "BBC";
$country = "UK";
$sortjson = array('date' => $date, 'result' => $end_result, 'medias' => $medias, 'country' => $country);
echo json_encode($sortjson, JSON_UNESCAPED_UNICODE);
?>
【讨论】:
【参考方案2】:您的Success方法有误:
使用 JSON.parse() 方法代替 $.parseJSON()
success: function(data)
var jsondata = JSON.parse(data);
console.log(jsondata);
【讨论】:
相同,为空的 console.log $.parseJSON(data) === JSON.parse(data); 请在您的答案中添加一些解释,以便其他人可以从中学习。你做了什么改变,为什么?【参考方案3】:你必须使用 JSON.parse()
function ajax_call()
const style2 = $("#style1").val();
const radio_btn = $('input[name="drone"]:checked').val();
if(style2=="")document.getElementById("error").innerHTML = "Error: Please enter style code !"; return false;
$.ajax(
type: 'post',
url: "t.php",
data: styles: style2 , country: radio_btn,
dataType: "json",
success: function(data)
var jsondata = JSON.parse(data);
console.log(jsondata);
)
【讨论】:
同样的东西清空console.log $.parseJSON(data) === JSON.parse(data); 请在您的答案中添加一些解释,以便其他人可以从中学习。你改变了什么,为什么?以上是关于通过 Ajax 解析 PHP 文件获取的 JSON 数据时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
jquery解析php通过ajax传过来的json二维数组对象
使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用