J'ai ce code écrit qui lira un fichier CSV et ajoutera des éléments à une liste SharePoint. Cela fonctionne mais il ajoute deux fois les mêmes articles. Il ajoute de haut en bas, puis ajoute des objets entiers.
Il lit les éléments correctement et ajoute correctement. Mais je ne suis pas capable de comprendre pourquoi le code fonctionne deux fois. p>
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body> <input type="file" id="fileUpload" /> <input type="button" id="upload" value="Upload" /> </body>
3 Réponses :
Après avoir fait des recherches, j'ai trouvé la réponse.
C'est donc ce que j'ai fini par faire.
remplacer p> avec p> Les choses fonctionnent maintenant :) p> p>
Une idée de ce que la question était et pourquoi cela a aidé?
Peut être votre script d'événement de liaison s'exécute deux fois ainsi, a ajouté deux fois l'ajout de clic. Vous pouvez nommer l'événement par une chaîne unique, de sorte qu'elle ne lie pas l'événement deux fois.
$("#upload").bind("click.uniqueName", function() { // your code here })
Le problème est dans votre appel AJAX Ajouter async: faux fort> dans votre appel Ajax. En effet, votre boucle d'exécution sera exécutée avant de terminer votre demande Ajax. Do mieux ajouter cette chose. sinon, vous pouvez utiliser jQuery différé. Votre code fonctionne bien. et votre événement n'est joint qu'une seule fois. function _createListItem(listItems, success, failure) {
$.ajax({
url: "https://mysite/_api/web/Lists/getbytitle('TestCatalog')/items",
type: "POST",
async:false,
contentType: "application/json;odata=verbose",
data: JSON.stringify(listItems),
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function(data) {
//success(data);
},
error: function(data) {
//failure(data);
}
});
}