2016-03-15 22 views
0

我試圖冰AJAX觸發:beforeSend,AJAX:錯誤和Ajax:完整的我的軌道形成被遠程提交。AJAX:beforeSend得到任何Ajax調用

我使用代理,綁定,實時等嘗試,但我仍然面臨着同樣的問題。

$('form#contact_form').bind('ajax:beforeSend', function(evt, xhr, settings) { 
    //getItemIds(); added this call on button click 
    call(); 
}) 
.bind('ajax:error', function(event, request, settings) { 
    text(); 
}) 
.bind('ajax:complete', function(event, request, settings) { 
    phone(); 
}); 

我的頁面也使Ajax調用其他錨鏈接,但對於任何Ajax調用所做的形式「beforesend」功能獲取調用。我只想爲特定的表單調用它。

當我做警報(event.target.id);在ajaxBeforesend裏面我看到了,我都沒有綁定Ajax調用

I am targeting only a specific form so how that before send be triggered for other links? Can anyone tell what is that i am doing wrong, Thanks.

NOTE: When i commented out the jquery_ui.js this behaviour stopped happening. Is is some conflict issue, Please help.

+0

形式是動態的嗎? – epascarello

+0

是的,它是一個Rails的形式爲您解答 –

回答

1

您表單綁定到任何Ajax調用可能發生的,元素的ID,其意味着如果背景中可能使用ajax的其他內容會觸發您的電話,而不僅僅是您希望捕捉的表單。

阻止任何運行窗體特定綁定的最佳方法是,在按鈕單擊(您沒有包括的東西,但我假設您在表單的某個位置有一個按鈕來執行此操作)來執行此操作按鈕單擊並且不綁定到窗體:

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    beforeSend: function() { 
     call(); 
    }, 
    success: function(data) { 
     //something 
    }, 
    error: function(xhr) { // if error occured 
     text(); 
    }, 
    complete: function() { 
     phone();   
    } 
}); 

如果這樣沒有幫助,請更新您的原始文章並提供更多信息。我真誠希望這有助於。

+0

您好感謝,當我這樣做警報(event.target.id);在ajaxBeforesend裏面,我看到了一個我沒有綁定ajax調用的元素的id。 –

+0

我有點困惑,這是正確的行爲。我只針對一個特定的表單,以便如何觸發其他鏈接? –

+0

是否將ajax命令封裝在提交按鈕的.on('click')中?如果它正在拾取其他元素,那麼由於某種原因它不具有約束性。請記住,如果你綁定beforeSend的形式,它會拿起任何阿賈克斯前通話,甚至無關的內容 – zerohero