gpt4 book ai didi

php - jQuery ajax() 返回 json 对象但未正确发出警报

转载 作者:行者123 更新时间:2023-12-01 06:17:07 26 4
gpt4 key购买 nike

为什么我无法使用 data[0].id 返回 id?

    $(document).ready(function(){   
$.ajax({
type: 'POST',
dataType: "json",
url: '<?php echo matry::base_to('tests/map_it');?>',
success: function (data)
{
alert(data[0])
$('#alerts').html(data);
data[0].id

}

});
});

这是返回的警报。

    {"id":19385,"first":"RLY","last":"MAZI",
"trainer_address1":"19 NE 13H CRT",
"trainer_address2":null,"CITY":"MII","STATE":"AL",
"trainer_zip":"33333","trainer_phone":"(721)222-4444","trainer_fax":null,
"trainer_cell":"(213)213- 2133","website_trainer_id":115,"trainer_email":"MO@gmail.COM",
"trainer_group":"","inactive":null}

任何帮助将不胜感激。

编辑这是返回该 json 的 php:

$mapit = sql::results("Select * from event.ACS.trainer where inactive is null or inactive=0");
foreach ($mapit as $row)
{
$return[] = json_encode($row, JSON_FORCE_OBJECT);
}
echo json_encode($return);

我必须循环遍历并编码每一行,因为否则,ajax 函数不会认为有返回的 json (并且我的数据变量为空)

最佳答案

你真正的问题在于你的 PHP:

$mapit = sql::results("Select * from event.ACS.trainer where inactive is null or inactive=0");
foreach ($mapit as $row)
{
$return[] = json_encode($row, JSON_FORCE_OBJECT);
}
echo json_encode($return);

您对数据进行了双重 json_encoding,这导致内部 JSON 在返回到 Javascript 时被视为 JSON 形式的字符串。

您应该按如下方式进行操作:

$mapit = sql::results("Select * from event.ACS.trainer where inactive is null or inactive=0");
foreach ($mapit as $row)
{
$return[] = $row;
}
echo json_encode($return);

请注意,我已经删除了最里面的 json_encode。

现在,您不需要在 Javascript 中使用 .parseJSON() 调用。该解决方案将比已接受的解决方案更有效,后者没有解决真正的问题。

效率会更高,因为

  1. 您没有对不需要编码的数据进行双重编码PHP。
  2. 您没有解码不需要编码的数据JavaScript。

因此,您消除了 2 个不必要的操作和许多浪费的周期(因为这些操作包含在循环内)。

关于php - jQuery ajax() 返回 json 对象但未正确发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com