gpt4 book ai didi

php - Ajax 将对象数组返回给 jquery 和 php

转载 作者:可可西里 更新时间:2023-10-31 23:01:31 24 4
gpt4 key购买 nike

我不确定我做的是否正确,但如果有人能向我解释这个过程,我将不胜感激

我的 main.php 文件中有一个带有 onclick 函数的 div

<div class='show_products' onclick='getData(".$id.")'>

jquery函数:

function getData(id){    
$.ajax({
url: 'ajax_info.php',
type: 'POST',
dataType:'json',
data: {id: id},
success: function(response) {
console.log(response); //shows a list of objects (array elements)
}
});
}

和ajax文件

$sql = "SELECT ......";
$results = Db::getInstance()->ExecuteS($sql);
foreach($results as $row) {
$product_id = $row['product_id'];
$date = $row['date'];
$name = $row['name'];

$array_info['product_id'] = $product_id;
$array_info['date'] = $date;
$array_info['name'] = $name;
}

echo json_encode($array_info);

上面的代码返回在ajax文件中创建的数组,在success函数中返回给jquery。

我不明白的是:如何遍历数组并在 main.php 文件中使用它?我想遍历它并创建一个包含数组中的值的表。意思是 3 列,产品 ID - 日期 - 名称,它们将由 ajax 返回的数组填充。

这是可能的还是我做错了?

非常感谢任何帮助

编辑:更新的 jquery 代码

function getData(id){    
$.ajax({
url: 'ajax_info.php',
type: 'POST',
dataType:'json',
data: {id: id},
success: function(response) {
document.getElementById('table_'+id).style.display='block';

for ( var i = 0; i < response.length; i++ ) {
console.log(response[i]);
var div = document.getElementById('table_'+id);
div.innerHTML = div.innerHTML + '<tr><td>'+response[i].product_id+'</td><td></td><td></td><td></td><td></td></tr>';
}
}
});
}

最佳答案

好吧,foreach 的每个循环都会清除预览循环中定义的数据,因此当您的 foreach 完成迭代后,您将得到最后一组数据。

您不需要遍历数组,因为您的查询已经返回一个数组

$sql = "SELECT ......";
$results = Db::getInstance()->ExecuteS($sql);
echo json_encode($results);

现在,如果您想从成功函数访问您的数据,您只需将它们命名为与您的行相同的名称。例如,如果您的行是 product_iddatename,您将这样调用它们:

function getData(id){    
$.ajax({
url: 'ajax_info.php',
type: 'POST',
dataType:'json',
data: {id: id},
success: function(response) {
response = JSON.parse(response);

console.log("Product id is: " + response[0].product_id);
console.log("Product name is: " + response[0].name);
console.log("Product date: " + response[0].date);
}
});
}

您还需要了解以下内容:假设出于某种原因您希望在不更改数据库的情况下为您的 json 使用不同的变量名,那么您将必须执行以下操作:

$sql = "SELECT ......";
$results = Db::getInstance()->ExecuteS($sql);
$newResults = array();

foreach ($results as $row)
{
$newResults[] = array('newId' => $row['product_id'], 'newName' => $row['name'], 'newDate' => $row['date']);
}

echo json_encode($newResults);

这将导致更改 JSON 中的变量:

function getData(id){    
$.ajax({
url: 'ajax_info.php',
type: 'POST',
dataType:'json',
data: {id: id},
success: function(response) {
response = JSON.parse(response);

console.log("Product id is: " + response[0].newId);
console.log("Product name is: " + response[0].newName);
console.log("Product date: " + response[0].newDate);
}
});
}

关于php - Ajax 将对象数组返回给 jquery 和 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318702/

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