通过 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

如果第一行是&lt;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二维数组对象

如何在json中编码php数组并解析成jquery

解析由 PDO 语句创建的 JSON 对象

使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

如何正确解析 JSON 文件以通过 JQuery Ajax 方法使用它?

php,JavaScript 如何读取并修改json文件?