You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX+PHP从JSON文件获取对应国家货币名失败问题排查

问题解决:AJAX传递国家名获取对应货币失败

问题现象

已成功将选中的国家名称传递至PHP服务器,但无法获取正确的货币名称,返回结果为空字符串或null。

错误原因分析

  1. 前后端数据格式不匹配:PHP脚本最终返回的是单个货币名字符串(如"Afghanistan Afghani"),但前端AJAX的success回调里却尝试以result2['0']['currency_name']的方式读取,这是错误的——返回值不是数组或对象数组,无法通过索引和键名获取。
  2. 字符串匹配可能存在空格干扰:$('#selCountry').text()获取的文本可能包含前后空格或换行符,导致和JSON文件中的国家名称无法精准匹配。
  3. PHP中未处理无匹配的情况:如果传入的国家名在JSON中不存在,$output会保持null,返回给前端的是空JSON值。

修复代码

1. 修正PHP脚本

添加字符串去空格处理,同时确保返回格式清晰:

<?php
// 确保JSON文件路径正确,若不在同一目录需调整路径
$jsonPath = 'country-by-currency-name.json';
if (!file_exists($jsonPath)) {
    header('Content-Type: application/json; charset=UTF-8');
    echo json_encode(['error' => 'JSON文件不存在']);
    exit;
}

$jsonResponse = file_get_contents($jsonPath);
$countryList = json_decode($jsonResponse, true);

$output = ['currency_name' => null];
// 对传入的国家名去空格
$targetCountry = trim($_POST['country']);

foreach ($countryList as $countryData) {
    // 同样对JSON中的国家名去空格,避免匹配失败
    if (trim($countryData['country']) === $targetCountry) {
        $output['currency_name'] = $countryData['currency_name'];
        break;
    }
}

header('Content-Type: application/json; charset=UTF-8');
echo json_encode($output);
?>

2. 修正AJAX代码

调整success回调的取值方式,同时对获取的国家名去空格:

// 去空格处理,避免多余字符干扰匹配
let countryN = $.trim($('#selCountry').text());

$.ajax({
    url: './currencyAPI.php',
    type: 'POST',
    dataType: 'JSON',
    data: {
        country: countryN
    },
    success: function (result2) {
        if (result2.currency_name) {
            $('#currency').html(result2.currency_name);
        } else {
            $('#currency').html('未找到对应货币');
        }
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log("获取货币数据失败: " + errorThrown);
        $('#currency').html('获取数据失败');
    }
})

额外检查项

  • 确认country-by-currency-name.json文件和currencyAPI.php在同一目录下,若路径不同需修改PHP中的$jsonPath。
  • 检查JSON文件格式是否正确,确保没有语法错误(比如末尾多余的逗号)。

内容的提问来源于stack exchange,提问作者Natasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:35:10