gpt4 book ai didi

javascript - 事件传播和ajax发布

转载 作者:行者123 更新时间:2023-11-28 21:23:56 27 4
gpt4 key购买 nike

我有以下代码:

<div id="parentDiv">
<a href="someurl"> ... </a>
</div>

div内的HTML来自外部源,我不知道它的结构,也无法控制它。

单击此链接后,我需要发布一些数据。因此,我在 div 元素上添加了一个 onclick 事件处理程序,希望事件能够传播,并使用 jQuery ajax 函数发布数据。

这在除 Safari 之外的所有浏览器中都运行良好 - 它不会返回任何错误,调用回调函数,但由于某种原因无法到达服务器。每次收到请求时我都会写入数据库。尝试在浏览器中手动加载帖子网址 - 工作正常并在数据库中创建记录。还尝试了 FF 和 Chrome - 按预期工作。

当将警报放入回调函数时,它会被调用,但在 Safari 中 data = null。

$('#parentDiv').delegate( 'a', 'click', function()
{
$.post('posturl',
{ param1: 'test'},
function(data)
{
alert('data = '+data);
},
"json"
);
});

期望 AJAX 在这种情况下工作是否正确?那么有没有更好的办法来解决这个问题呢?

谢谢!

最佳答案

这听起来像是您需要将 delegate 与异步 AJAX 结合起来。请注意,这几乎从来都不是一件好事——唯一真正的异常(exception)是当您想在离开页面之前立即执行 AJAX 请求时。

您的代码可能如下所示:

$('#parentDiv').delegate( 'a', 'click', function()
$.ajax({
type: 'POST',
url: 'posturl',
{ param1: 'test'},
dataType: 'json',
async: false
});
});

这将等待 POST 请求完成,然后再继续跟踪链接。请注意,这优于在成功回调中使用 location = url,因为此解决方案允许正常执行正常的浏览器操作,例如中键单击。

关于javascript - 事件传播和ajax发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com