gpt4 book ai didi

javascript - JQuery AJax 获取页面片段查找与过滤

转载 作者:行者123 更新时间:2023-12-01 02:21:54 26 4
gpt4 key购买 nike

这是我正在测试的 Ajax 代码的形式。

$('body').on('submit','#sign-in', function(e) {
e.preventDefault();

var data = $(this).serialize();

var url = $(this).attr('action');
$.ajax({
//this is the php file that processes the data and send mail
url : url,
type : "POST",
data : data,
dataType:"html",
//Do not cache the page
cache : false,
//success
success : function(response,status) {
console.log($(response).filter('#dashboard'));
console.log($(response).find('#dashboard').html());
}
});
});

这是回复。

<!DOCTYPE html>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<div id = "dashboard">
<div id = "dash2">
<h1>HELLO</h1>
</div>
</div>
</body>
</html>

根据上面的代码,成功的 jQuery filter 能够获取带有 id #dashboard 的 div,但是 find 返回一个未定义

为什么会这样?

供您引用,我使用的是 JQuery 1.9

更新

根据 Bergi 的建议,我删除了返回 html 的 html、body 和 head 标签,这是我收到的错误。

Uncaught Error: Syntax error, unrecognized expression:

HELLO

HELLO FITCCHHH jquery-1.9.0.min.js:2

最佳答案

jQuery 将整个页面设置为 innerHTML<div> ,因此 doctype、html、head 和 body 元素不会被解析。您只会返回结果元素的集合,并且因为您的 #dashboard filter 是您需要的这些顶级元素之一而不是find

另请参阅:

我不知道如何解决这个问题,显然那里有很多 jQuery 怪癖。我能想到的是:

  • 尝试jQuery.parseXML
  • 依靠filter从 jQuery 集合中获取有问题的元素。不过,由于浏览器似乎对于解析内容并不一致,因此您应该执行类似 $response[$response.is("#dashboard") ? "filter" : "find"]("#dashboard") 的操作
  • 将格式错误的集合附加到某个元素并 find从那里:$("<div/>").html(response).find("#dashboard")
  • 等待 jQuery.parseHTML
  • 不要发送整个 HTML 文档,而只发送#dashboard您感兴趣的元素作为 html 字符串

关于javascript - JQuery AJax 获取页面片段查找与过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14672577/

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