Javascript jQuery.click()函数中的远程Ajax调用不';在进入下一页之前,我不能完成
我需要使用ajax(JSON)将我网站上的点击信息发送到第三方服务器。我正在使用jQuery,并将单击事件添加到某些链接中。在click事件中,我向远程服务器发出一个JSON请求,请求中包含click的位置(热图)和一些其他信息 问题是ajax函数没有在默认链接操作发生之前及时启动。将Javascript jQuery.click()函数中的远程Ajax调用不';在进入下一页之前,我不能完成,javascript,jquery,json,ajax,jquery-events,Javascript,Jquery,Json,Ajax,Jquery Events,我需要使用ajax(JSON)将我网站上的点击信息发送到第三方服务器。我正在使用jQuery,并将单击事件添加到某些链接中。在click事件中,我向远程服务器发出一个JSON请求,请求中包含click的位置(热图)和一些其他信息 问题是ajax函数没有在默认链接操作发生之前及时启动。将async设置为false似乎对远程ajax调用不起作用。我已经尝试了preventDefault(),但是我不知道在成功的ajax调用之后如何运行默认操作。以下是我想做的: $('a').click(submit
async
设置为false似乎对远程ajax调用不起作用。我已经尝试了preventDefault()
,但是我不知道在成功的ajax调用之后如何运行默认操作。以下是我想做的:
$('a').click(submit_click);
function submit_click(e,fireAjax){
e.preventDefault();
cd_$.ajax({
url: jsonUrl, //remote server
dataType: 'json',
data: jsonData,
async: false,
success: function(reply){
//Run the default action here if I have to disable the default action
},
});
}
有什么建议吗?换句话说,你试图同时做两件事:
<a ID="SOMETAG" href="...">link</a>
你想保留SOMETAG
的HREF,以防他们关闭javascript
我认为解决方案是,当您连接到onclick处理程序时,您应该通过javascript删除href,然后让onSuccess以编程方式调用href
因为我看不出在哪里可以让浏览器生成一个新的进程来完成AJAX调用,这反而会破坏模型。如果我离开某个页面(或关闭选项卡),我不希望浏览器代表我继续与服务器对话…是的,你必须这样做
- 捕获链接的href值
- 在submit_click函数中返回false
- 将成功函数中的页面url更改为存储的href值 $('a')。单击(提交)
function onClick() {
// Attached to "#SOMETAG" and does an AJAX call ...
}
function submit_click(e,fireAjax){
e.preventDefault();
var oldHref = $(this).attr('href'); // store the old url
cd_$.ajax({
url: jsonUrl, //remote server
dataType: 'json',
data: jsonData,
async: false,
success: function(reply){
//Run the default action here if I have to disable the default action
window.location.href = oldHref; // go to the new url
},
});
return false; // don't actually go to the href
}