JQuery Ajax赢得't发送get请求,而是刷新页面
JQuery Ajax won't send get request, refreshes page instead
这段代码应该向预定义的url(包括变量)发送get请求;然后刷新页面上的数据表。
然而,它所做的只是刷新页面——我的服务器无法接收到对所述URL的get请求。如何让它发挥作用?
$(".ajaxAction").on("click",function (event) {
var ajaxActionUrl = $(this).data("actionUrl");
var ajaxActionQuery = $.get({type:"GET", url:ajaxActionUrl, success:function () {
order_table.ajax.url(ajaxTableUrl).load();
}});
event.preventDefault();
})
编辑:我的HTML实际上是一个Jinja模板,我的JS文件如下:
$(document).ready(function(){main()})
function main(){
ajaxTableUrl = $('#initial_table').data("tableLinkedTo")
$(".container").hide();
$("#OrderUI").show();
$("#order_button").parent().css("backgroundColor","#f5f5f5");
$("#initial_table").parent().css("backgroundColor","yellow");
$(".menu-tab").on("click",function(){
$("li.hnav").removeAttr('style');
$(this).parent().css("backgroundColor","#f5f5f5");
$("#kinandonboard").parent().removeAttr('style');
var linkedto = $(this).data("linkedto");
$(".container").hide();
$(linkedto).show()
}
);
$("#kinandonboard").on("click",function(){
$("#order_button").parent().css("backgroundColor","#f5f5f5");
}
);
var order_table = $('#order_table').DataTable({
retrieve: true,
ajax : ajaxTableUrl,
'bSort': false,
"columns" : [{"data": "orderId"},
{"data": "companyName"},
{"data": "customerOrderRef"},
{"data": "orderPaid"},
{"data": "orderPrice"},
{"data": "orderDate"},
{"data": "requiredDate"},
{"data": "orderQuantity"},
{"data": "orderStage"},
{"data": "orderActions"},],
"columnDefs": order_table_cols,
"scrollY": "200px",
"scrollCollapse": true,
"info": true,
"paging": false,
"searching": false
}) ;
$(".order-table-button").on("click",function(){
$("li.vnav").removeAttr('style');
$(this).parent().css("backgroundColor","yellow");
ajaxTableUrl = $(this).data("tableLinkedTo");
order_table.ajax.url(ajaxTableUrl).load()
});
$(".ajaxAction").on("click",function (event) {
event.preventDefault();
var ajaxActionUrl = $(this).data("actionUrl");
var ajaxActionQuery = $.get({type:"GET", url:ajaxActionUrl, success:function () {
order_table.ajax.url(ajaxTableUrl).load();
}});
})
}
order_table.ajax.url(ajaxTableUrl).load();
有一个错误,但我们无法判断是什么错误,因为您没有发布该错误的代码。这一行会打断你的代码,因此event.preventDefault();
无法执行,导致表单提交,显示为页面刷新。更改为:
$(".ajaxAction").on("click",function (event) {
event.preventDefault();
var ajaxActionUrl = $(this).data("actionUrl");
var ajaxActionQuery = $.get({type:"GET", url:ajaxActionUrl, success:function () {
order_table.ajax.url(ajaxTableUrl).load();
}});
})
这样页面刷新就停止了,您可以在浏览器的错误日志控制台中查看ordertable的错误。
我打赌您正试图将click事件附加到一个动态元素,这样它就不存在了。因此,您需要更改单击以使用事件委派。
$(".ajaxAction").on("click",function (event) {
至
$(document).on("click", ".ajaxAction" ,function (event) {
尝试提供更多信息。基于这个微小的代码片段,很难全面了解出了什么问题。理想情况下,还要附加此点击侦听器的相关HTML代码。
与此问题相关的最常见问题是:
- jQuery没有正确加载,请检查浏览器控制台是否有错误
- 点击监听器没有触发,
even.preventDefault
根本没有被调用。检查正在侦听的类是否正确,或者是否没有侦听动态加载的元素。也许可以尝试在单击事件功能的开头添加一个console.log('click')
。如果控制台中没有任何记录,您将知道在哪里搜索
编辑
根据您提供的代码,数据表似乎通过AJAX加载数据(正如我在2中所描述的)。尝试将您的代码更改为:
$(document).on("click", ".ajaxAction", function (event) {
var ajaxActionUrl = $(this).data("actionUrl");
var ajaxActionQuery = $.get({type:"GET", url:ajaxActionUrl, success:function () {
order_table.ajax.url(ajaxTableUrl).load();
}});
event.preventDefault();
})
相关文章:
- 如果不刷新Rails中的浏览器,AJAX请求就无法看到效果
- Spring MVC Ajax请求刷新动态表
- css媒体查询请求后刷新jQuery插件
- 在 ASP 中请求后刷新模型.MVC
- 如何在ajax请求周期性自动刷新时使用knockout.js数据绑定
- JQuery Ajax赢得't发送get请求,而是刷新页面
- 完成请求后刷新页面
- 如何在不刷新页面的情况下将数据从 ajax 远程请求附加到
- 在触发请求之前刷新侦听器中的令牌
- yii2:使用 Pjax 更新/刷新/重新加载页面,与请求页面不同
- 为什么当我通过 Ajax 请求刷新部分时我的实例变量为空
- 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存的资源
- jQuery Mobile中AJAX请求后刷新页面
- 如何在输入地址的同时发送新的地理定位请求并刷新谷歌地图
- angular http获取请求通过服务需要刷新以显示数据
- AJAX请求带有Jquery,不刷新页面,同时使用选项对象和回调
- Jquery ajax请求后,HTML表不会刷新
- 如何使用javascript刷新页面并设置请求头
- 使用post请求刷新页面
- 何时为API请求刷新过期的Firebase3 (Web)令牌