Мой голос в том, что ваши переменные внутри обратного вызова успеха не определены, поэтому метод не компилируется или не выполняется.
alert("Data saved: " + nameMsg);
alert("Data saved: " + locationMsg);
alert("data saved: " + error);
nameMsg
, locationMsg
и error
, похоже, нигде не определены. Похоже, это маскируется под метод, который иногда не выполняется, но инструменты разработчика Firebug или Chrome должны показать вам ошибку.
Будет ли выполнен ваш успешный обратный вызов, если вы не попытаетесь их использовать? Просто сделай
alert("foo");
и посмотрите, работает ли это.