使用jQuery和Ajax错误的foreach()无效参数错误

时间:2018-10-19 17:53:58

标签: 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()错误中提供Invalid参数?任何想法?请帮忙。我还是jquery和ajax的新手。谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题是您的JavaScript代码行member_name = member_name.toString();。当member_name发送到服务器时,它仍然是一个字符串,当您真的想以数组形式对其进行迭代时,您正在尝试对该字符串进行迭代。

如果要在将数组发送到服务器之前使用JavaScript记录该数组,请删除该行,而不要console.log(member_name);进行console.log(member_name.toString());