Javascript 使用链接重新发送AJAX请求?
是否只需要重新加载AJAX请求,以便在下面的代码中更新从外部站点提取的内容Javascript 使用链接重新发送AJAX请求?,javascript,jquery,Javascript,Jquery,是否只需要重新加载AJAX请求,以便在下面的代码中更新从外部站点提取的内容 $(document).ready(function () { var mySearch = $('input#id_search').quicksearch('#content table', { clearSearch: '#clearsearch', }); var container = $('#content'); function doAjax(url) {
$(document).ready(function () {
var mySearch = $('input#id_search').quicksearch('#content table', { clearSearch: '#clearsearch', });
var container = $('#content');
function doAjax(url) {
if (url.match('^http')) {
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20*%20from%20html%20where%20url%3D%22"+
encodeURIComponent(url)+
"%22&format=xml'&callback=?",
function (data) {
if (data.results[0]) {
var fullResponse = $(filterData(data.results[0])),
justTable = fullResponse.find("table");
container.append(justTable);
mySearch.cache();
$('.loading').fadeOut();
} else {
var errormsg = '<p>Error: could not load the page.</p>';
container.html(errormsg);
}
});
} else {
$('#content').load(url);
}
}
function filterData(data) {
data = data.replace(/<?\/body[^>]*>/g, '');
data = data.replace(/[\r|\n]+/g, '');
data = data.replace(/<--[\S\s]*?-->/g, '');
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, '');
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, '');
data = data.replace(/<script.*\/>/, '');
data = data.replace(/<img[^>]*>/g, '');
return data;
}
doAjax('link');
});
现在我有一个按钮可以重新加载整个页面,但我只想重新加载AJAX请求。这可能吗
编辑:我需要指定更多。虽然它可以很容易地再次调用AJAX,但它也可以替换已有的信息吗?您只需在单击按钮时再次调用doAjax函数
$("#buttonID").on("click", function() {
doAjax("link");
});
将其添加到上述document.ready代码中,并相应设置按钮ID
然后改变
container.append(justTable);
到
您只需要在单击按钮时再次调用doAjax函数
$("#buttonID").on("click", function() {
doAjax("link");
});
将其添加到上述document.ready代码中,并相应设置按钮ID
然后改变
container.append(justTable);
到
在doAjax函数中,将HTML附加到元素上。如果覆盖元素的HTML而不是附加到元素,则每次运行doAjax函数时都会刷新HTML:
简单更改:
container.append(justTable);
致:
当然,您可以将单击事件处理程序绑定到链接或任何元素,就像其他答案所示。确保将click事件绑定到document.ready事件处理程序中的适当范围内,以便可以从click事件处理程序访问doAjax函数。在doAjax函数中,将HTML附加到元素上。如果覆盖元素的HTML而不是附加到元素,则每次运行doAjax函数时都会刷新HTML:
简单更改:
container.append(justTable);
致:
当然,您可以将单击事件处理程序绑定到链接或任何元素,就像其他答案所示。确保将click事件绑定到document.ready事件处理程序中的适当范围内,以便可以从click事件处理程序访问doAjax函数。是否有任何方法可以替换已经存在的信息?抱歉,我应该在op.中指定更多内容,而不是container.appendjustTable do container.htmljustTable-这将替换任何现有数据。请注意:.on在jQuery 1.7中是新的,在本例中与.bind相同。谢谢你提到这个,贾斯珀。我倾向于尝试使用最新的版本,但有时忘记了这并不总是每个人都可以选择的。有没有任何方法可以替代已经存在的信息?抱歉,我应该在op.中指定更多内容,而不是container.appendjustTable do container.htmljustTable-这将替换任何现有数据。请注意:.on在jQuery 1.7中是新的,在本例中与.bind相同。谢谢你提到这个,贾斯珀。我倾向于尝试使用最新的版本,有时会忘记这并不总是每个人都可以选择的。