Я понимаю, что этой информации недостаточно, но я полностью озадачен и хотел получить некоторые идеи.
В моем приложении вы выбираете определенную активность, а затем вызов Ajax выбирает Вопросы. для этой деятельности, и они получают через руль JS. Это так называемые «базовые вопросы» для этой Деятельности. Поля, которые являются RadioButton, могут вызывать «Последующие вопросы», которые всегда являются текстовыми полями. так что есть обработчик jQuery, прикрепленный ко всем визуализированным RadioButtons. На их change
мероприятии, есть дополнительный звонок Ajax, чтобы получить дополнительные вопросы и обработать их. Только некоторые радиокнопки на самом деле имеют дополнительные вопросы, но для всех радиокнопок change
.
будет выполнен вызов на стороне сервера. В конце, когда вы отправляете нарисованную форму, все input/select/textarea
вопросы должны быть заполнены. Существует также проверка, которая ограничивает вас от отправки, если что-то пустое. Если какое-либо последующее действие (всегда текстовое поле) будет пустым, проверка остановит отправку.
$.ajax({
type : "post",
dataType : "json",
url : '/app/getBaseQuestions?activityId=' + activityId,
data : ''
})
.then (function(data) {
// Comes back as JSON. Use Handlebars to render, based on specified rules
// ...
var template = Handlebars.compile( $('#scriptQuestionsForActivity').html());
$('#divQuestionsForActivityOutput').append(template(json));
// Follow-Up checks for Radio Button questions only
$('div[id*="BLOCK_LEVEL"] input[type=radio]').change(function() {
var activityQuestionId = $(this).attr('id').split('_')[0].match(/\d+/)[0];
// Get Follow-Up questions for this radio button
$.ajax({
type : "post",
dataType : "json",
url : '/app/getFollowUpQuestionsFor?parentActivityQuestionId=' + parentActivityQuestionId,
data : ''
})
.then (..) // the Follow-Ups will also be painted and appended to the form
});
});
Проблема : Все работает, но в PROD я вижу это крайне редко, может быть, 0,5 -1% времени, продолжение не будет отправлено на родительский вопрос, который имеет его. Симптомы:
1) Одна и та же активность иногда отправляется правильно для одного и того же пользователя с соответствующим ответом на вопрос о последующем вопросе, поэтому просто случайное последующее действие change
на радиопереключателе не срабатывает , Это не воспроизводится.
2) Когда возникает эта редкая ошибка, отправляется выбор радиокнопок (поэтому все «базовые» вопросы были нарисованы правильно), но на стороне сервера Ajax для getFollowUp ( ) никогда не называется. Это снова говорит мне, что обработчик change
просто никогда не запускается. Они выбрали радиокнопку, но последующих попыток выборки не было.
Единственное, о чем я могу думать, это то, что до присоединения обработчика change
произошла ошибка JS. Но как я могу отладить ошибки JS пользователя PROD? Нет ошибок на стороне сервера, нет таймаутов, и это происходит в нескольких браузерах (iPhone, Ma c, Windows Chrome).