Javascript 限制AJAX响应中的元素数
AJAX响应返回Javascript 限制AJAX响应中的元素数,javascript,jquery,ajax,Javascript,Jquery,Ajax,AJAX响应返回元素列表: <a href="/1/">One</a> <a href="/2/">Two</a> <a href="/3/">Three</a> 这就是我目前正在尝试的,但是我得到了一个未捕获的错误:语法错误,无法识别的表达式,然后是整个响应。下面是我要做的: $.ajax({ url: '/' + page, success: function (res) { btn.a
元素列表:
<a href="/1/">One</a>
<a href="/2/">Two</a>
<a href="/3/">Three</a>
这就是我目前正在尝试的,但是我得到了一个未捕获的错误:语法错误,无法识别的表达式,然后是整个响应。下面是我要做的:
$.ajax({
url: '/' + page,
success: function (res) {
btn.after(res.split('</a>').splice(0, num).join('</a> ') + '</a>');
} });
$.ajax({
url:“/”+第页,
成功:功能(res){
btn.after(res.split('').splice(0,num).join('')+'');
} });
它将其拆分,只返回您想要的元素
JSFiddle:您遇到的问题是上下文选择器不返回任何内容。一个简单的测试表明了这一点
console.log($('a', $(res)))
把它打碎。您需要对从服务器返回的内容使用筛选器,因为它是锚的列表
var content = $(res);
var anchors = content.filter("a");
var anchorLimit = anchors.slice(0,20);
btn.after(anchorLimit);
另一种选择是执行您正在执行的操作,但将其包装在一个div中
$('a', $("<div>" + res + "</div>"))
$('a',$(“”+res+“”)
响应的末尾有两个关闭的
div
元素,但没有两个打开,因此我必须创建一个:
$.ajax({
url: '/' + page,
success: function (res) {
btn.after($('a', $($.trim('<div><div>'+res))).slice(0,20));
}
});
$.ajax({
url:“/”+第页,
成功:功能(res){
btn.在($('a',$($.trim(''+res)))之后。切片(0,20));
}
});
代码不应该是$(res,'a')。切片(0,20)
您确定没有空格或奇怪字符,并且响应是有效的HTML。Ajax响应是在res
raw data还是JSON中?btn.after($('').append($.trim(res)).find('a').filter(':lt(21))代码>@JakeGould这只是原始数据。
$.ajax({
url: '/' + page,
success: function (res) {
btn.after($('a', $($.trim('<div><div>'+res))).slice(0,20));
}
});