Sharepoint Online,Javascript无法在Firefox中运行

时间:2016-02-10 09:48:29

标签: javascript sharepoint

使用JavaScript制作SharePoint应用程序来管理数据级别。

这可以在IE和Chrome中找到,但在Firefox中没有任何用处,没有错误没有警告只是没有动作!

function List_AddCompany() {
    var ListName = "CompanyInfo";
    var context = new SP.ClientContext.get_current();
    var lstObject = context.get_web().get_lists().getByTitle(ListName);
    var listItemCreationInfo = new SP.ListItemCreationInformation();
    var newItem = lstObject.addItem(listItemCreationInfo);
        newItem.set_item('CPY_ID', $('#CPY_ID').text());
        newItem.set_item('CPY_Name', $('#CPY_Name').val());
        newItem.set_item('CPY_OverDuePercentage', $('#CPY_OverDuePercentage').val());

    newItem.update();
    context.executeQueryAsync(Function.createDelegate(this, onSuccess),
        Function.createDelegate(this, onFailure));

    function onSuccess() {
        console.log("Company added successfully");
    }

    function onFailure(sender, args) {
        console.log("There was an error creating company", args);
    }
}    

任何想法都会很棒

2 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题。
修复是在函数List_AddCompany之外引入函数onSuccess()函数onFailure(sender,args)

如果您使用调试器测试当前代码并单步执行它,则在context.executeQueryAsync调试器将登陆失败方法并且不会进入该方法并将返回调用函数并将结束代码而没有任何错误。

function List_AddCompany() {
    var ListName = "CompanyInfo";
    var context = new SP.ClientContext.get_current();
    var lstObject = context.get_web().get_lists().getByTitle(ListName);
    var listItemCreationInfo = new SP.ListItemCreationInformation();
    var newItem = lstObject.addItem(listItemCreationInfo);
    newItem.set_item('CPY_ID', $('#CPY_ID').text());
    newItem.set_item('CPY_Name', $('#CPY_Name').val());
    newItem.set_item('CPY_OverDuePercentage', $('#CPY_OverDuePercentage').val());

    newItem.update();
    context.executeQueryAsync(Function.createDelegate(this, onSuccess),
        Function.createDelegate(this, onFailure));
}

function onSuccess() {
    console.log("Company added successfully");
}

function onFailure(sender, args) {
    console.log("There was an error creating company", args);
}

答案 1 :(得分:0)

删除了@Vaibhav建议的所有内部函数,这使我能够看到在传递变量时出现的问题。 所以为了解决这个问题,我编写了一个延迟代码块来处理所有添加,这似乎适用于所有浏览器(尽管MS网站说其他方式有效)

以下是延迟语句及其用法的代码。

SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function () {
    var listTitle = 'List Name';
    var propertiesToAdd = [];
    propertiesToAdd.push({
        ID: "Property Name",
        newval: Property Value,
    })
    propertiesToAdd.push({
        ID: "Property Name",
        newval: Property Value,
    })
    addListItems(listTitle, propertiesToAdd)
    .done(function (items) {
        console.log("added successfully");
    })
    .fail(function (error) {
        console.log("There was an error creating company", error);
    });
});

}

使用代码

.try