我有这个输入字段,
<input type="text" name="member[]" class="memberName" value="$member_name"/>
<input type="text" name="position[]" value="$position">
<input value="Male" name="gender[]" type="radio" class="Gender" />
<input value="Female" name="gender[]" type="radio" class="Gender" />
我正在使用 jquery 和 ajax 来获取值,
$(document).ready(function(){
var member_name = [];
$('.memberName').each(function(){
if($(this).is(":checked"))
{
member_name.push($(this).val());
}
});
member_name = member_name.toString();
console.log(member_name);
var member_position = [];
$('.memberPosition').each(function(){
if($(this).is(":checked"))
{
member_position.push($(this).val());
}
});
member_position = member_position.toString();
var gender = [];
$('.Gender').each(function(){
if($(this).is(":checked"))
{
gender.push($(this).val());
}
});
gender = gender.toString();
$.ajax({
url: "Queries/save.php",
type: "POST",
data: {"member_name":member_name, "member_position":member_position,
"gender":gender
},
success: function(yey){
console.log(yey);
alert(yey);
}
});
});
});
这是我的 save.php,
if(isset($_POST['member_name']) || isset($_POST['member_position']) || isset($_POST['gender']) || isset($_POST['user_id'])){
$member_name = $_POST['member_name'];
$position = $_POST['member_position'];
$gender = $_POST['gender'];
$IDuser = $_POST['user_id'];
foreach($member_name as $mname) {
$position = $_POST['member_position'];
$gender = $_POST['gender'];
$compos_date = $_POST['cmatcompos_date'];
$sql_check = "SELECT ID_cmat FROM cmat_composition WHERE ID_users = '$IDuser' AND Saved = '1'
AND cmatcompos_date = '$compos_date'";
$result_check = mysqli_query($conn,$sql_check);
$row = mysqli_fetch_assoc($result_check);
$ID_cmat = $row['ID_cmat'];
$sql = "INSERT INTO members (member_name, position, gender, total_male, total_female, Saved, ID_cmat, ID_users)
VALUES ('$mname', '$position', '$gender', '1', '$ID_cmat', '$IDuser')";
$success = mysqli_query($conn, $sql);
}
}
我已经在 jquery 中将变量声明为数组,但为什么我仍然在 foreach() 错误中提供了无效参数?任何想法?请帮忙。我还是 jquery 和 ajax 的新手。谢谢。
最佳答案
您的问题是您的 JavaScript 代码行 member_name = member_name.toString();
。当 member_name
被发送到服务器时,它仍然是一个字符串,当您真的想将它作为一个数组进行迭代时,您正试图对该字符串进行迭代。
如果您想在将数组发送到服务器之前用 JavaScript 记录数组,请删除该行,而不是 console.log(member_name);
执行 console.log(member_name .toString());
.
关于php - foreach() invalid argument error using jquery and ajax 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897654/