2017-09-15 82 views
0

我在與AJAX一個問題,因爲某些原因,要麼沒有被調用或不工作AJAX不會被調用

$(document).ready(function() { 
    $("#my_form").submit(function(event) { 
    alert("submited"); 

    event.preventDefault("#my_form"); 

    var post_url = $(this).attr("action"); //get form action url 
    var request_method = $(this).attr("method"); //get form GET/POST method 
    var form_data = $(this).serialize(); //Encode form elements for submission 

    alert(post_url + "" + request_method + " " + form_data); 

    $.ajax({ 
     type: post_url, 
     url: request_method, 
     data: form_data, 
     success: function(data) { 
     alert(data); 
     $("server-results").html(data); 
     } 
    }); 

    $('#loadingDiv').hide().ajaxStart(function() { 
     $(this).show(); 
    }); 
    //.ajaxStop(function() { 
    // $(this).hide(); 
    //}); 
    }); 
}); 

我已經調試,就像我能有在JavaScript中激活表單函數或將3個變量傳輸到JS代碼塊中並不成問題。然而,ajaxStart沒有激活,這讓我相信問題只存在於ajax中。

我也檢查了鏈接到ajax,它似乎正在工作,但我不知道如果它的正確的鏈接,或者如果它無論出於任何原因無效。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 

僅供參考ajax鏈接位於HTML和JS之上的頁面頂部。

+0

你可以用'beforeSend'和'complete'隱藏和顯示股利 – Niladri

+4

** $(「服務器結果」)HTML(數據); **在這裏你還沒有,如果**服務器指定-results **是一個類或id,因此服務器的輸出將永遠不會被打印在頁面上 – Pinguto

回答

2

您已經通過錯誤的參數:

type: post_url, 
url: request_method, 

你需要傳遞POST_URL在URL和REQUEST_METHOD型。只需將其更改爲:

type: request_method, 
url: post_url, 
+1

還包括'$(「server-results」).html(data);'不會將選擇器正確地指定爲ID或類 –

+0

使用全局ajaxstart不是一個好的選擇,除非你想觸發每個ajax調用相同的加載文本 – Niladri

+0

我不能相信我錯過了,但我糾正它,仍然沒有發生。這就像ajax本身沒有被調用。 BTW $(「server-results」)。html(data);不是主要問題,因爲在那種情況下,我至少會得到警報。 – AnotherAccount

2

$( 「服務器結果」)HTML(數據);這裏如果服務器結果是一類或ID,因此服務器的輸出絕不頁面

jQuery .ajaxStart()

在jQuery的官方文檔中的報道,ajaxStart事件上進行打印尚未指定不能由#loadingDiv元素激活,但您必須使用該文檔。

$(document).ajaxStart(function() { 
    $(".log").text("Triggered ajaxStart handler."); 
}); 

總結代碼應該是這樣的。

$(document).ready(function() { 
    $("#my_form").submit(function(event) { 
    alert("submited"); 

    event.preventDefault("#my_form"); 

    var post_url = $(this).attr("action"); //get form action url 
    var request_method = $(this).attr("method"); //get form GET/POST method 
    var form_data = $(this).serialize(); //Encode form elements for submission 

    alert(post_url + "" + request_method + " " + form_data); 

    $.ajax({ 
     type: post_url, 
     url: request_method, 
     data: form_data, 
     success: function(data) { 
     alert(data); 
     $(".server-results").html(data); 
     } 
    }); 

    $(document).ajaxStart(function() { 
     $('#loadingDiv').show(); 
    }); 
    .ajaxStop(function() { 
     $('#loadingDiv').hide(); 
    }); 
    }); 
}); 
+0

我相信答案可能是你的**和** Bhumi Shah的答案的結合。似乎有多個問題需要解決。 –

+0

我在問題的評論中報告之前發現了錯誤 – Pinguto