2016-07-22 27 views
0

執行我有一個函數:Ajax調用不與其他形式的透過

function blur_slide_visit_count(){ 
    $.ajax({ 
     type: 'POST', 
     url: 'add_save_slide_visitor_count.php', 
     async: false, 
     data: { fillvalue: fieldArray }, 
     success : function(){} 
    }); 
} 

我也有一個元素:

<input class="btn btn-default btn1" type="submit" id="submit-btn"> 

我已經附加一個偵聽器調用輸入功能:

$("#submit-btn").click(function() { 
    blur_slide_visit_count(); 
    $("form").submit(); 
}); 

我希望發生的事情是,當用戶點擊輸入時,函數被調用,AJAX執行哪個c所有PHP頁面應該更新我的數據庫。但是,當我點擊按鈕時,數據庫永遠不會更新。我認爲AJAX呼叫正在下降,但我不知道爲什麼。

任何人都可以幫助解釋爲什麼上面的代碼不工作?

+1

你會提交的網頁... –

+1

如果您正在使用AJAX你爲什麼要再次提交代碼AJAX方法是什麼?異步。您必須等到ajax請求完成後 –

+1

如果您需要執行這兩個操作。聽取提交事件而不是點擊事件'$(「#submit-btn」)。submit(function(){})'會更好。爲了確保ajax實際完成,您可能需要執行同步阻止ajax調用而不是異步。 – algorithmicMoose

回答

2

您必須先使用preventDefault()停止提交表單,因爲您想使用ajax.Just將event.preventDefault();添加到您的點擊處理程序的頂部,然後放置您的代碼。

$("#submit-btn").click(function(event) { 
    event.preventDefault(); 
    .... 
}); 
1

爲什麼使用異步=假的 - 這不應該被使用,頁面它會阻止用戶交互的Ajax調用的時候,接下來的事情 - 一些HTML元素具有默認行爲,默認綁定,就像 - 表單並提交,默認行爲是發送的形式,來避免這種情況的結合應該是使用的preventDefault()

$("#submit-btn").submit(function(e) { 

    e.preventDefault(); 
    blur_slide_visit_count(); 
}); 

看我綁定提交沒有點擊(好習慣),如果您需要綁定點擊,使用按鈕不輸入,然後點擊不會觸發提交事件。

您輸入更改爲(非常重要的一類=「按鈕」 PS類型=「提交」將觸發提交表單。):在這種情況下,我們並不需要那麼

<button class="btn btn-default btn1" type="button" id="submit-btn"> 

將其綁定(使用的preventDefault

$("#submit-btn").click(function(e) { 

    blur_slide_visit_count(); 
}); 

,如果你需要調用阿賈克斯後提交,然後改變你的函數(我添加功能最後一件事 - 回調後AJ被稱爲斧頭通話):

function blur_slide_visit_count(callback){ 
    $.ajax({ 
    type: 'POST', 
    url: 'add_save_slide_visitor_count.php', 
    async: true, 
    data: { fillvalue: fieldArray }, 
    success : function(){ 

    //call callback after ajax 
    callback(); 
} 
}); 
} 

,然後綁定的樣子:

$("#submit-btn").click(function(e) { 

    blur_slide_visit_count(function(){ 
     $("form").submit(); 
    }); 
});