2017-09-15 83 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