簡體   English   中英

jQuery:不在表單提交事件上執行ajax調用,除非之后有警報調用?

[英]jQuery: ajax call not executed on form submit event unless I have a alert call after it?

我正在對Web應用程序上的現有表單進行一些修改。 我無權訪問表單的代碼,但是可以向頁面添加腳本,因此我在jQuery的幫助下進行了一些自定義。

所以,現在我有這樣的事情:

jQuery( "#new_user" ).submit(function( event ) {

    event.preventDefault();

var fullname = jQuery("#user_name").val();
var email = jQuery("#email_primary").val();
var company = jQuery("#contact_customer").val();

jQuery.ajax({
        async: false,
        dataType: 'jsonp',
        url:"https://server.com/script.php",
        data: {"fullname": fullname, "email": email, "company": company},
        success: function(response){
        alert("json says " +response.res);
        }
});
    alert("hello");
});

現在,這很好。 我基本上是在攔截表單提交。

問題是, 只有在我將alert()調用保留在其中的情況下才執行ajax調用 ,這顯然是我不想要的,它只是用於調試。 如果我刪除alert()調用,則將提交表單,但ajax調用將無法正常工作。 我可以訪問應該接收JSONP請求的Web服務器,但是它甚至沒有到達那里。

第二個警報實際上從未執行,但實際上我在那里不需要任何東西,我只需要在Web服務器上接收GET。

我試圖將async:false添加到ajax()選項,但是沒有運氣。

我有點困惑,並且對此進行了很多研究/實驗。 任何提示表示贊賞,在此先感謝。

您必須阻止表單提交,否則ajax請求將被取消

jQuery( "#new_user" ).submit(function( event ) {
    event.preventDefault()
    jQuery.ajax(...);
    alert("hello");
});

而且您想提交有關ajax成功的表格,對嗎?

jQuery( "#new_user" ).submit(function( event ) {
    event.preventDefault()
    var self = jQuery(this);
    jQuery.ajax({
        async: false,
        dataType: 'jsonp',
        url:"https://server.com/script.php",
        data: {"fullname": fullname, "email": email, "company": company},
        success: function(response){
            alert("json says " +response.res);
            self.submit();
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM