Я создаю более или менее календарь Google, но с гораздо более конкретными функциями/функциями. Как и в Календаре Google, когда пользователь нажимает на событие, я заполняю «всплывающий» div с запросом ajax get. Html, который заполняет этот div, включает функции javascript, относящиеся к рассматриваемому событию. Когда пользователь завершит использование всплывающего окна, закрывает ли он или сохраняет изменения, я удаляю html внутри него, прежде чем скрывать его.
Теперь к проблеме: для определенного события есть процесс создания два шага щелчки 1) пользователя на календаре, чтобы создать временное, подвижное, изменяемое событие, перемещает его на место, нажимает на нее, чтобы увидеть подтвердите всплывающее окно, которое при подтверждении вызывает сервер для создания события в базе данных.
//(start) and (end) are unix timestamps for the beginning and end of the new event
$.getJSON("/events/add/(start)/(end)", function(data) {
//server returns whether or not the add was successful...
});
Теперь, когда это было подтверждено, и сервер не имеют каких-либо проблемы при сохранении нового события, HTML всплывающем ныряет стерта, всплывающий скрыта, и календарь refetches событий с сервера , Как и должно быть, новое событие теперь подается в календарь из базы данных.
Когда пользователь щелкает по версии базы данных, я заселить всплывающее окно с view.ctp (я использую CakePHP), который включает в себя кнопку отмены и яваскрипт функцию «отменить()»
Это где я нахожусь в недоумении: Я знаю, что кнопка вызывает функцию правильно, я протестировал ее несколькими разными способами. В функции другой запрос getJSON ...
$.getJSON("/events/cancel/(eventId)", function(data) {
//server returns whether or not cancellation was successful
});
Если я обновил страницу, отмена работает, как ожидалось, но если я пытаюсь отменить событие сразу же после его создания (без первого обновления страницы), вместо «/ events/cancel/(eventId)», который вызывается, «/ events/add/(start)/(end)» снова вызывается.
Нет проблем с получением данных JSON (когда вызывается правильный URL-адрес). Фактически, возвращаемое им сообщение об ошибке - это тот, который вы ожидаете, если попытаетесь добавить событие, которое перекрывается с существующим событием.
Опять же, я знаю, что правильная функция JavaScript вызывается, и я знаю, что каждая серверная функция работает надлежащим образом. Это просто, по причинам, которые я не понимаю, вызывая неправильный URL.
Извините, что сделал такую историю из этого, и я надеюсь, что я включил достаточно информации. Я не думаю, что это проблема в моем коде - как я уже упоминал, обновление страницы предотвращает эту проблему.
Я попытался установить кеш jquery в false. Я попытался переименовать и переместить мои функции JavaScript, чтобы предотвратить возможные перекрытия. Я попытался изменить $ .getJSON на просто $ .get, но проблема одна и та же.
Замечательно объяснить все, но чтобы получить действительно полезную помощь, вы захотите показать (много) больше кода. –