php - foreach() invalid argument error using jquery and ajax 错误

标签 php jquery mysql ajax

我有这个输入字段,

<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/

相关文章:

jquery - 我可以 :nth-child(10-infinity)?

php - 将php变量数据从一个页面传递到另一个页面

mysql - 错误 1036 (HY000) : Table 'Atable_name' is read only

php - 什么是/dev/arandom?

php - 空白页诊断。如果问题

c#-4.0 - 如何在asp.net web api中使用接收POST数据?

PHP INSERT 由于某些未知原因无法正常工作

php - WooCommerce 自定义运费最低所需小计以及税金计算

PHPmailer 的 AddEmbeddedImage 方法不起作用

javascript - iOS Safari 过度滚动 : Pulling down vs. 弹跳