我已编写此代码,它将读取CSV文件并将项目添加到SharePoint列表。它正在工作,但是两次添加相同的项目。它从上到下添加,然后再次添加整个项目。
它正确读取项目并正确添加。但是我无法弄清楚为什么代码要运行两次。
这是我的代码
<script type="text/javascript">
$(function () {
$("#upload").bind("click", function () {
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
if (regex.test($("#fileUpload").val().toLowerCase())) {
if (typeof (FileReader) != "undefined")
{
var reader = new FileReader();
reader.onload = function (e)
{
var rows = e.target.result.split("\n");
console.log(rows);
for (var i = 1; i < rows.length; i++) {
var cells = rows[i].split("|");
var item = {"__metadata": {"type": "SP.Data.TestCatalogListItem"},
"Title": cells[0],
"CityTitle":cells[1],
"FirstName":cells[3],
"LastName":cells[4]
}
_createListItem(item);
}
}
reader.readAsText($("#fileUpload")[0].files[0]);
}
else {
alert("This browser does not support HTML5.");
}
} else {
alert("Please upload a valid CSV file.");
}
});
});
function _createListItem( listItems, success, failure) {
$.ajax({
url: "https://mysite/_api/web/Lists/getbytitle('TestCatalog')/items",
type: "POST",
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);
}
});
}
</script>
<body>
<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" />
</body>
非常感谢任何帮助。
经过一些研究,我找到了答案所以这就是我最终要做的
替换$(“#upload”)。bind(“ click”,函数(){
与
$(“#upload”)。unbind(“ click”)。click(function(){
现在正在工作:)