事件传播和ajax发布
我有以下代码:
<div id="parentDiv">
<a href="someurl"> ... </a>
</div>
div中的HTML来自外部源,我不知道它的结构,也无法控制它。
点击此链接后,我需要发布一些数据。所以我在div元素上添加了一个onclick事件处理程序,希望事件将传播,并使用jQuery ajax函数发布数据。
这在所有浏览器中运行良好,但Safari - 它不会返回任何错误,调用回调函数但由于某种原因无法到达服务器。每次收到请求时我都会写入数据库。试图在浏览器中手动加载帖子网址 - 工作正常,并在db中创建记录。还尝试了FF和Chrome - 按预期工作。
当向回调函数发出警报时,它被调用但在Safari data = null中。
$('#parentDiv').delegate( 'a', 'click', function()
{
$.post('posturl',
{ param1: 'test'},
function(data)
{
alert('data = '+data);
},
"json"
);
});
期望AJAX在这种情况下工作是否正确?这个问题有更好的解决方案吗?
谢谢!
没有找到相关结果
已邀请:
2 个回复
咖哀烈
与异步AJAX结合起来。请注意,这几乎不是一件好事 - 唯一真正的例外是您希望在离开页面之前立即执行AJAX请求。 您的代码可能如下所示:
这将等待POST请求完成后再继续关注链接。请注意,这优于在成功回调中使用
,因为此解决方案允许正常的浏览器操作,如中键点击正常。
青董据零
方法。它告诉一个元素监听从某个元素冒出来的某个事件,并在观察到它时执行行为。您还希望阻止链接的默认操作,并在ajax操作完成时将浏览器发送到链接。 文档:http://api.jquery.com/delegate/ 示例代码:
这个: 委派活动 防止默认 等待ajax的回应 发送浏览器链接 演示:http://jaaulde.com/test_bed/dasha_salo/