Javascript 反应JS+;PHP(Mysql)=;records.map不是一个函数;;
我的代码有什么问题 我的PHP文件正确返回了一个json数组,问题只存在于javascript代码中,javascript在正确的状态下实现了json,只有在使用映射显示结果时出现了错误 帮助 JS文件Javascript 反应JS+;PHP(Mysql)=;records.map不是一个函数;;,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我的代码有什么问题 我的PHP文件正确返回了一个json数组,问题只存在于javascript代码中,javascript在正确的状态下实现了json,只有在使用映射显示结果时出现了错误 帮助 JS文件 import React,{Component} from 'react'; import axios from 'axios'; export default class Main extends Component{ state = { records : [],
import React,{Component} from 'react';
import axios from 'axios';
export default class Main extends Component{
state = {
records : [],
isLoading : true
}
componentDidMount(){
this.loading();
}
loading = async () => {
const response = await axios.get("http://localhost/apihunt/carro/read.php");
const {records} = response.data;
this.setState({records, isLoading : false});
//console.log(this.state.records);
}
render(){
const {records, isLoading} = this.state;
return(
<div>
{!isLoading ? records.map((car)=>(
<div key={car.id}>
<p>{car.id}</p>
<p>{car.nome}</p>
<p>{car.descricao}</p>
</div>
))
: <p>:(</p>}
</div>
);
}
}
records.map不是一个函数 映射需要数组,而不是对象,因此PHP需要创建索引数组而不是关联数组。最具体的问题在于:
carros_arr["records"][$id] = [] // defines PHP assoc, becomes JS object
carros_arr["records"][] = [] // defines PHP indexed, becomes JS array
你可以用两种不同的方法来修复它。在使用关联数组(成为JSON/JavaScript对象
)时,PHP中需要一个索引数组(成为JSON/JavaScript数组
)。有两种方法可以解决此问题:
// Before fetch loop define $carros_arr["records"] = [];
$carros_arr["records"][] = [
"id" => $id,
"nome" => $nome,
"descricao" => html_entity_decode($descricao),
"marca" => $marca,
"valor" => $valor
];
或者
如果使用一行程序,您需要修改数据:
foreach ($carros_arr["records"] as &$record) {
$record['descricao'] = html_entity_decode($record['descricao']);
}
Map需要数组,而不是对象,因此PHP需要创建索引数组而不是关联数组。最具体的问题在于:
carros_arr["records"][$id] = [] // defines PHP assoc, becomes JS object
carros_arr["records"][] = [] // defines PHP indexed, becomes JS array
你可以用两种不同的方法来修复它。在使用关联数组(成为JSON/JavaScript对象
)时,PHP中需要一个索引数组(成为JSON/JavaScript数组
)。有两种方法可以解决此问题:
// Before fetch loop define $carros_arr["records"] = [];
$carros_arr["records"][] = [
"id" => $id,
"nome" => $nome,
"descricao" => html_entity_decode($descricao),
"marca" => $marca,
"valor" => $valor
];
或者
如果使用一行程序,您需要修改数据:
foreach ($carros_arr["records"] as &$record) {
$record['descricao'] = html_entity_decode($record['descricao']);
}
如果您确定问题是您的JS而不是PHP,请删除该标记(并添加来自PHP的结果转储)。记录数据的格式是什么?这似乎不是一个数组。我编辑了帖子。如果你确定问题是你的JS而不是你的PHP,请删除该标记(并从PHP中添加一个结果转储)。你的记录数据的格式是什么?它似乎不是数组。我编辑了帖子。他仍然可以使用关联数组并执行:
Object.keys(this.state.records).map((record)=>{…})代码>很好,我没想到。我认为良好的实践是构造数据服务器端,但是这绝对是一个解决方案,当然,对于每个人来说,他仍然可以使用一个关联数组并执行:<代码>对象.KEY(这个.STATE.REST).map((记录)={}…});<代码>很好,我没想到。我认为良好的实践是构造好服务器端的数据,但这绝对是一个解决方案,当然,对每个人来说也是如此。