【问题标题】:jQuery / Ajax: How to access values from result arrayjQuery / Ajax:如何访问结果数组中的值
【发布时间】:2020-06-23 10:22:26
【问题描述】:

我使用以下 Ajax 调用从数据库中获取翻译。
调用本身有效并返回以下结果。

谁能告诉我如何访问 Ajax 结果中数组中的值,以便将它们分配给我的变量?我得到一个错误或空变量,并且找不到使这项工作的方法(我是数组的新手)。

注意:本例中的 id 是唯一标识符,因此 Ajax 调用始终只返回一行。

Ajax 调用:

$.ajax({
    type: 'POST',
    url: 'fetchTrans.php',
    data: {
        transId: transId
    },
    success: function(result){                  
        var transDE = ''; // should be result['de']
        var transEN = ''; // should be result['en']
        var transDA = ''; // should be result['da']
        var transES = ''; // should be result['es']
        var transFR = ''; // should be result['fr']
        var updateDate = ''; // should be result['updateDate']
        
        $('#transId').val(transId);
        $('#langDE').val(transDE);
        $('#langEN').val(transEN);
        $('#langDA').val(transDA);
        $('#langES').val(transES);
        $('#langFR').val(transFR);
        $('#updateDate').val(updateDate);
    }
});

Ajax 结果(示例):

array (
  'de' => 'Ziffer',
  'en' => 'digit',
  'da' => 'cifret',
  'es' => 'dígito',
  'fr' => 'chiffre',
  'updateDate' => '2020-05-09 19:40:58',
)

【问题讨论】:

  • JS中接收到的result是什么?
  • @VLAZ:结果是我在上面发布的。它是 PHP MySQLi 查询的结果。
  • 但是JS得到的数据是什么,这是我的问题。 result 是什么 - 它是一个字符串吗?它被包裹在什么东西里了吗?

标签: jquery ajax associative-array


【解决方案1】:

如果我在你身边我会怎么做:

首先在PHP中将数组编码为json:

echo json_encode($array);

这样您最终会在 ajax 调用中返回一个 JSON。

然后我会相应地更改 AJAX(请注意,我添加了一个 JSON 类型以不依赖于 jquery dataType 自动检测:

$.ajax({
    type: 'POST',
    url: 'fetchTrans.php',
    dataType: 'JSON',
    data: {
        transId: transId
    },
    success: function(result){
        $('#transId').val(transId);
        $('#langDE').val(result.de);
        $('#langEN').val(result.en);
        $('#langDA').val(result.da);
        $('#langES').val(result.es);
        $('#langFR').val(result.fr);
        $('#updateDate').val(result.updateDate);
    }
});

另外,正如您所注意到的,我跳过了将结果分配给变量。除非您在响应中不需要这些变量来处理其他内容,否则它完全没用

【讨论】:

  • 非常感谢 - 这看起来很棒。现在将尝试并报告。
  • 这太棒了 - 再次感谢!将尽快接受此作为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2014-12-19
相关资源
最近更新 更多