jquery ajax 链接工作/不工作它随着时间的推移而工作
Posted
技术标签:
【中文标题】jquery ajax 链接工作/不工作它随着时间的推移而工作【英文标题】:jquery ajax links work / not work It works through time 【发布时间】:2016-10-23 18:11:16 【问题描述】:请帮忙,我明白为什么 ajax 链接在点击时有效或无效? 它会随着时间的推移而起作用
window.onload = function()
function getXmlHttp()
...... // simply ajax
var cont = document.getElementById('wrapper1');
var As = document.getElementsByTagName("A"); // get links
for(var i = 0, l = As.length; i < l; i ++)
As[i].onclick = function(href) // code
As[i].addEventListener('click', false); // code
return function(e)
e.preventDefault();
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', href, false);
xmlhttp.send(null);
if(xmlhttp.status == 200) cont.innerhtml = xmlhttp.responseText;
(As[i].href);
As[i].href = "javascript: void 0"; // right code ?
【问题讨论】:
【参考方案1】:据我从您现有的代码中可以看出,您正在尝试将点击处理程序绑定到 all 锚元素,这将对href
属性中的 URL 发出 Ajax 请求,并在id="wrapper1"
元素中显示结果。
您的代码在没有任何缩进的情况下有点令人困惑,但它看起来基本没问题,除了您尝试使用 Ajax 响应 而不 等待 onreadystatechange
event - 您需要包装它处理程序中的if(xmlhttp.status)...
行如下:
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', href, false);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() // <---- add this
if(xmlhttp.status == 200) cont.innerHTML = xmlhttp.responseText;
;
另外,这一行:
As[i].addEventListener('click', false);
... 不正确,因为 addEventListener()
期望函数引用作为其第二个参数,而且当您已经通过 .onclick = ...
在元素上设置点击处理程序时调用它根本没有意义.
鉴于您已使用 jQuery 标记您的问题,这里有一个更短的替代实现:
$(document).ready(function() // when DOM is ready
var $cont = $("#wrapper1"); // save reference to output element
$("a").click(function(e) // bind click to all anchors
e.preventDefault(); // prevent default click behavior
$.get(this.href, function(result) // Ajax get request to href URL
$cont.html(result); // put result in output element
);
);
);
【讨论】:
以上是关于jquery ajax 链接工作/不工作它随着时间的推移而工作的主要内容,如果未能解决你的问题,请参考以下文章
405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式
如何将已经工作的 jquery ajax 发布请求重用于自动完成功能?