foreach () ошибка неверного аргумента при использовании jquery и ajax error - PullRequest
0 голосов
/ 19 октября 2018

У меня есть эти поля ввода,

<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 () error?Любая идея?Пожалуйста помоги.Я все еще новичок в JQuery и AJAX.Спасибо.

1 Ответ

0 голосов
/ 19 октября 2018

Ваша проблема в вашей строке кода JavaScript member_name = member_name.toString();.Когда member_name отправляется на сервер, это все еще строка, и вы пытаетесь перебрать эту строку, когда вы действительно хотите перебрать ее как массив.

Если вы хотите зарегистрироватьперед отправкой на сервер, затем удалите эту строку и вместо console.log(member_name); do console.log(member_name.toString());.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...