2013-08-28 2 views
0

Итак, у меня есть этот запрос ajax. Когда пользователь нажимает ссылку на редактирование, я получаю идентификатор записи и обновляю страницу с данными этой записи, загруженной в форму.jQuery ajax request неудобный выпуск

Вот моя проблема: это работает только с предупреждением, показываемым перед вызовом ajax. Когда я оставляю предупреждение, я получаю ошибку ajax (хотя идентификатор отправляется), и страница PHP просто перезагружается. Более того, он работает только тогда, когда я положил newDoc как успешный обратный вызов. Точно такие же линии, как полный обратный вызов и перезагрузка страницы. Более того, это происходит только в Firefox.

jQuery('a.edit').on('mousedown', function (e) { 
    e.preventDefault(); 
    var id = jQuery(this).attr('data-title'); 
    alert('test'); 
    jQuery.ajax({ 
     url: document.location, 
     data: { 
      id: id 
     }, 
     success: function (data) { 
      var newDoc = document.open("text/html", "replace"); 
      newDoc.write(data); 
      newDoc.close(); 
     }, 
     error: function() { 
      alert('error'); 
     } 
    }); 
}); 

Что я могу сделать?

EDIT: Это должно быть проблема с синхронизацией. Я только заметил, что когда я нажимаю и удерживаю ссылку на редактирование в течение секунды или около того, все работает нормально. Когда я делаю короткий щелчок, это не так. Поэтому я попробовал обернуть ajax в setTimeout(), но это не помогло. Любые другие идеи?

+0

Почему вы используете 'jQuery' вместо' $ '? – bansi

+0

Почему вы делаете вызов Ajax, чем открытие окна, почему бы вам просто не открыть окно для запуска? – epascarello

+0

@bansi с использованием 'jQuery' предпочитается над' $ '. отнимает много головных болей при написании кросс-фреймворков/кодов. – itachi

ответ

0

Попытка использовать location.href вместо document.location,

jQuery.ajax({ 
    url: location.href, 
    data: { 
     id: id 
    }, 
    success: function (data) { 
     var newDoc = document.open("text/html", "replace"); 
     newDoc.write(data); 
     newDoc.close(); 
    }, 
    error: function() { 
     alert('error'); 
    } 
}); 

location представляет собой структурированный объект, с свойствами, соответствующими частями URL. location.href - это весь URL-адрес в одной строке.

+0

Пробовал, тот же выпуск. Я не понимаю, почему document.location должен быть неправильным. Я проверил путь, и он правильный. В обстоятельствах, описанных в моем сообщении, он работает finde с document.location. – eevaa

+0

** document.location ** - это 'object', а' ajax url' должен быть 'string' read http://api.jquery.com/jquery.ajax/ –

+0

Я добавил .toString(), чтобы быть в безопасности. Все еще не работает. – eevaa

0

Получил это!

Проблема заключается в том, как Firefox обрабатывает событие mousedown. Кажется, вы прекратите вызов ajax, как только вы переместите кнопку мыши. Я изменил событие на , нажав, и теперь все в порядке.

jQuery('a.edit').on('click', function() { 
    var id = jQuery(this).attr('data-title'); 
    jQuery.ajax({ 
     url: document.location, 
     data: { 
      id: id 
     }, 
     success: function (data) { 
      var newDoc = document.open("text/html", "replace"); 
      newDoc.write(data); 
      newDoc.close(); 
     } 
    }); 
});