这是我的回复由ajax返回的页面。
<!DOCTYPE HTML>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
</head>
<body>
<div id = "div1">
<h1>HI am a dashboard</h1>
<h1>HI am a dashboard</h1>
<h1>HI am a dashboard</h1>
</div>
</body>
</html>
在我的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(data) {
console.log(data);
console.log($(data).find('#div1').html());
}
});
})
console.log($(data).find('#div1').html());
未定义。而
console.log(data);
返回我之前说过的页面。
更新 发现问题,我的代码中有两个“数据”变量。我已成功更改了一个,但它仍然返回undefined
$('#submit-login').on('click',function(e){
$('#hidden-submit-login').click();
})
$('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) {
console.log($(response).find('#div1').html());
console.log(response);
//console.log($((html).find('#div1').html();
}
});
});
答案 0 :(得分:1)
您正在string
上应用jQuery选择器而不是DOM元素
response
对象是请求的结果;它在您的DOM中不存在。
就像; document.getElementById('div1')
会返回null
。
在使用之前,您应该为DOM创建/附加HTML元素。
如果您要执行的操作是解析页面内的<div id="div1">...</div>
块,请提出请求:
首先,我建议您删除所有其他标记(包括<html>
,<body>
,<head>
以及<head>
内的所有内容。所以你的文件只包括:
<div id="div1">
<h1>HI am a dashboard</h1>
<h1>HI am a dashboard</h1>
<h1>HI am a dashboard</h1>
</div>
然后在你的AJAX success()
回调中;使用jQuery DOM插入方法(在这里为您选择合适的方法:inside,outside):
$.ajax({
url : url,
type : "POST",
data : data,
dataType: "text",
cache : false,
success : function(data) {
if (data) {
$('body').append(data); //this will append the html inside the response; at the end bottom of your page's body
console.log($('#div1').html());
}
}
});
现在您已将div1
附加在页面正文的底部,因此可以访问。
console.log($('#div1').html());
注意:请确保 id div1
是唯一的,以便在进行进一步操作时不要选择其他现有元素。