2016-02-10 8 views
0

Создание приложения SharePoint с использованием JavaScript для управления уровнем данных.Sharepoint Online, Javascript не работает в Firefox

Эта работа находит в 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); 
    } 
}  

Любые идеи, было бы здорово

+0

Cache? Возможно, вы предварительно загрузили страницу внутри firefox, и теперь браузер увидел старый. Попробуйте очистить кеш Firefox или нажмите Ctrl + F5 на странице или запустите Firefox в инкогнито .. – Max

+0

Не бойтесь, у меня есть ощущение, что firefox имеет дело с командой executeQueryAsync, так как он попадает в точку прерывания либо в onSuccess, либо в onFailure – Caz1224

+0

try 'context.executeQueryAsync (onSuccess, onFailure);' – Max

ответ

0

Удалены все внутренние функции, как предложил @Vaibhav и это позволило мне увидеть проблему, возникшую из этого, когда дело дошло до передачи переменных хорошо. Итак, чтобы решить эту проблему, я написал отложенный блок кода для обработки всех добавлений, и это, похоже, работает в разных браузерах (хотя сайт MS говорит, что работает наоборот)

Ниже приведен код для отложенного оператора и его использования.

function addListItems(listTitle, propertiesToAdd) { 
var ctx = SP.ClientContext.get_current(); 
var web = ctx.get_web(); 
var list = web.get_lists().getByTitle(listTitle); 
var listItemCreationInfo = new SP.ListItemCreationInformation(); 
var newItem = list.addItem(listItemCreationInfo); 
propertiesToAdd.forEach(function (entry) { 
    newItem.set_item(entry.ID, entry.newval); 
}); 
    newItem.update(); 
var d = $.Deferred(); 
ctx.executeQueryAsync(function() { 
    d.resolve(true); 
}, 
function (sender, args) { 
    d.reject(args); 
}); 
return d.promise(); 

}

И использование кода

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); 
    }); 
}); 
+0

Хорошая приятельница работы .. :) – Vaibhav

0

мы столкнулись с такой же проблемой.
Фикса принести функцию OnSuccess() и функции OnFailure (отправитель, арг) вне функции List_AddCompany()

Если проверить текущий код с отладчиком с пошаговым его после 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); 
} 
+0

Это очень похоже на то, что я подозревал. Пробудет сегодня вечером. Спасибо – Caz1224

+0

Так что я должен дать вам несколько больших пальцев, но это все еще не решило проблему, поэтому я пошел на большую перезапись всех моих дополнительных функций. – Caz1224

Смежные вопросы