我试图将信息从数组插入我的数据库。我首先遇到的问题是,我从php获得了未定义的$ _POST ['Person'],$ _ POST ['Color_name'],$ _ POST ['Opinion']索引。
第二个问题是我想使用dataType:“ json”;在我的Ajax jQuery中,但是如果我使用它,则数据无法到达php文件。
到目前为止,我一直尝试将get_data函数中的返回数据json字符串化,但没有成功。我也尝试过解码php中的数据,但是由于它获取的是未定义的索引,所以我猜测必须在jQuery中完成一些工作。
这是get_data()函数返回的数组
{Person: "James", Color_name: "blue", Opinion: "Looks good"}
{Person: "James", Color_name: "green", Opinion: "Looks ok"}
{Person: "Rebecka", Color_name: "blue", Opinion: "Looks bad"}
{Person: "Rebecka", Color_name: "black", Opinion: "Looks very bad"}
的HTML
<div>
<ul data-person="James">
<li data-color_opinion="blue">Looks good</li>
<li data-color_opinion="green">Looks ok</li>
</ul>
<ul data-person="Rebecka">
<li data-color_opinion="blue">Looks bad</li>
<li data-color_opinion="black">Looks very bad</li>
</ul>
</div>
jQuery查询
function get_data() {
var data = [];
$.each($('ul'), function(i, el) {
$.each($(el).find("[data-color_opinion]"), function(j, child) {
let person = $(el).data('person');
let color_name = $(child).data('color_opinion');
let opinion = $(child).text();
data.push({ Person: person, ColorName: color_name, Opinion: opinion });
});
});
return data;
};
console.log(get_data())
$.ajax({
type: "POST",
url:'colors.php',
data:get_data´(),
success: function(data) {
console.log(data);
}
});
});
的PHP
<?php
$servername = "servername";
$username = "username";
$password = "password";
$person = $_POST['Person'];
$color_name = $_POST['Color_name'];
$opinion = $_POST['Opinion'];
try {
$db = new PDO("mysql:host=$servername;dbname=DB_NAME", $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "INSERT INTO colors (person, color_name, opinion)
VALUES ($person, $color_name, $opinion)";
$db->exec($sql);
echo "New records created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$db = null;
?>
最佳答案
没有$_POST['Person'];
,因为所有javascript对象都在外部数组中,并且get_data()
返回整个数组
尝试类似的方法:
$.ajax({
type: "POST",
url: 'colors.php',
data: {items : get_data()},
// ^^ items contains an array
success: function(data) {
console.log(data);
}
});
然后在PHP
$items = $_POST['items'];// is array of sub arrays
foreach($items as $item){
$person = $item['Person'];
// get the other values and do a query within each iteration of this loop
}