У меня проблемы с ajax-запросами и просто <input type="submit"/>
.
Я использую для загрузки представлений внутри других представлений, я имею в виду модульный, с использованием jquery .load(url)
из одного представления в другое.
проблема в том, что если я загружаю view_2 внутри view_1, а js-скрипт для view_2 находится внутри view_1, мне нужно использовать live('click')
, например, для запуска запроса xhr из view_2, поэтому при попытке запускается 3 (multiple) xhr at same time
вместо 1, не знаю почему.
единственное, что я знаю:
- с использованием
live('click')
в view_1 запускается 3-х кратный XHR.
- использование
click()
в view_1 не работает (очевидно, я так думаю).
- использование
click()
непосредственно внутри view_2 это работает (но я не могу использовать JS
в загруженных представлениях я могу использовать js только в представлениях "родителей")
функции действительно просты, действительно не знаю, почему у меня есть эта проблема (я также отключил отправку в ajax beforeSend), проверьте, что это код view_1, который запускается в загруженном view_2 и запускает 3 XHR для клика: |
$(document).ready(function(){
$('#save-doc').live('click',function(){
var _title = $('#doc-title').val();
var _doc = $('#doc-doc').val();
update_doc(url_update_doc,{'title':_title,'doc':_doc,'id_doc':_choosed_doc,'id_project':id_project},this);
});
});
function update_doc(_url,_data,_starter){
$.ajax({
type:'POST',
data:_data,
url:_url,
dataType:'json',
beforeSend:function(){
$('.ajax-loading').show();
$(_starter).attr('disabled','disabled');
},
error:function(){
$('.ajax-loading').hide();
$(_starter).removeAttr('disabled');
},
success:function(json){
$('.ajax-loading').hide();
$(_starter).removeAttr('disabled');
if(json.error){
$('#error-title').html(json.error_title);
$('#error-doc').html(json.error_doc);
$.scrollTo('.append-form-edit-doc','fast');
}
if(json.confirm){
$.scrollTo('#top','fast');
$.gritter.add({
title:'Document Saved',
text:json.confirm
});
}
}
});
}