Bonjour,

Je souhaite insérer des données via AJAX dans une base de données MySQL.

Code javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function saveMapping(){
    var session = "<?php echo $_SESSION['user_id']; ?>";
    var input = document.getElementById('fileUpload'); // get the input
    var fichier = input.files[0];
 
    const listItems = document.querySelectorAll(".zone-groupe ul");
    var i = 0;
    for (i = 0; i < listItems.length; i++) {
        var ulID = oElems[i].id;
        var value = listItems[i].textContent;
        //alert(session+fichier+ulID+value);
        insertMapping(session, fichier, ulID, value);
    }
}
 
 
function insertMapping(session, fichier, ulID, value){
    	$.ajax({
        url: "./php/insert_mapping.php",
        type: "POST",
        data: {
            USER: session,
            FICHIER: fichier,
            UL_ELEMENT: ulID,
            UL_VALUE: value
        },
        processData: false,
        contentType: false,
    	});
}
Code PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("../authent/config.php");
 
 
$user = $_POST['USER'];
$fichier = $_POST['FICHIER'];
$ul_element = $_POST['UL_ELEMENT'];
$ul_value = $_POST['UL_VALUE'];
 
 
$sql = "INSERT INTO MAPPING (USER, FICHIER, UL_ELEMENT, UL_VALUE) VALUES ('$user', '$fichier', '$ul_element', '$ul_value')";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute();
echo json_encode(array("statusCode"=>200));
?>
Si je n'ai qu'une ligne à insérer et que les insert ne sont pas faits dans la boucle FOR, alors l'insertion fonctionne correctement.

Depuis que j'ai mis cette insertion dans une boucle FOR, des lignes vides sont insérées (toutes les colonnes sont vides).

De plus, j'ai les erreurs ci-dessous dans la console java
Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received

J'ai également essayé avec ces méthodes mais ça ne veut pas fonctionner :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function functABC(){
    $.ajax({
        url: 'myPage.php',
        data: {id: id},
        success: function(data) {
            return data;
        },
        complete: function(){
              // do the job here
         }
    });
}
 
var response = functABC();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
function functABC(){
    $.ajax({
        url: 'myPage.php',
        data: {id: id},
        async: false,
        success: function(data) {
            return data;
        }        
    });
 
   // do the job here
}
Est-ce que quelqu'un pourrait m'aider à sortir de ces problèmes ?

Merci beaucoup