$.when 返回的data1,data2,看下第二个alert为什么打印为空。

LSSSSSS 2017-06-24 12:27:17
var promise2 = $.when($.ajax(
"test4promise1.html",{
dataType:"html"
}
),
$.ajax(
"test4promise2.html",{
dataType:"html"
}
)
);
promise2.done(function(data1,data2){
alert(data1);//这里打印出来整个html文档 文本
alert($(data1).filter("h1").text());//这里alert 为空字符串,获取不到data1 html 里的内容
$("body").append("<br/>"+" 4 "+$(data1).filter("h1").text());
$("body").append("<br/>"+" 5 "+$(data2).filter("h1").text());
}).fail(function(){
alert("fail");
});
我想获取data1 和data2 里的元素。怎么操作呢
...全文
402 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-06-28
  • 打赏
  • 举报
回复
引用 6 楼 LSSSSSS 的回复:
[quote=引用 4 楼 showbo 的回复:] [quote=引用 3 楼 LSSSSSS 的回复:] [quote=引用 1 楼 jslang 的回复:] alert($(data1).find("h1").text());
find 没用 !正则表达式就算了,还有其它方法吗[/quote] 没问题啊 $('<div><h1></h1><h1>111</h1></div>').find('h1').text()//111 如果你的h1不在其他容器中用filter或者直接text就行了 $('<h1></h1><h1>111</h1>').filter(':eq(0)').text()//第一个h1没内容显示为空 $('<h1></h1><h1>111</h1>').filter(':eq(1)').text()/111 $('<h1></h1><h1>111</h1>').text()//111[/quote] 代码在楼上,大神帮我看看什么情况,不行[/quote] 有2个ajax请求done返回的参数是数组,第一个是html,第二个是jqueryXHR对象。而且以后要说jquery版本号,不同jquery api修改过了 promise2.done(function (data1, data2) { console.log(data1,data12) $("body").append("<br/>" + " 4 " + $(data1[0]).filter("h1").text()); $("body").append("<br/>" + " 5 " + $(data2[0]).filter("h1").text()); }).fail(function () { alert("fail"); });
LSSSSSS 2017-06-27
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
[quote=引用 3 楼 LSSSSSS 的回复:] [quote=引用 1 楼 jslang 的回复:] alert($(data1).find("h1").text());
find 没用 !正则表达式就算了,还有其它方法吗[/quote] 没问题啊 $('<div><h1></h1><h1>111</h1></div>').find('h1').text()//111 如果你的h1不在其他容器中用filter或者直接text就行了 $('<h1></h1><h1>111</h1>').filter(':eq(0)').text()//第一个h1没内容显示为空 $('<h1></h1><h1>111</h1>').filter(':eq(1)').text()/111 $('<h1></h1><h1>111</h1>').text()//111[/quote] 代码在楼上,大神帮我看看什么情况,不行
LSSSSSS 2017-06-27
  • 打赏
  • 举报
回复
我的代码是下面这些,我试验的不行,不知道什么原因
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>这是一个promise测试1 H1 </h1>
	<div>
		这是一个promise测试1 DIV
	</div>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>这是一个promise测试2 H1 </h1>
	<div>
		这是一个promise测试2 DIV
	</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="../../js/jquery-1.11.1.js"></script> <script type="text/javascript"> var promise = $.ajax({ url:"test4promise1.html", dataType:"html" }) //成功和失败后 调用方法 promise.done(function(data){ $("body").html(" 1 "+$(data).filter("h1").text()); }).fail(function(){ alert("fail"); }) //then 紧跟着的方法是成功,后面一个是失败 promise.then(function(data){ $("body").append("<br/>"+" 2 "+$(data).filter("h1").text()); }),(function(){ alert("fail"); }) $.ajax({ url:"test4promise1.html", dataType:"html" }).done(function(data){ $("body").append("<br/>"+" 3 "+$(data).filter("h1").text()); }).fail(function(){ alert("fail"); }) //两个ajax 全部访问结束后再统一处理。 var promise2 = $.when($.ajax( "test4promise1.html",{ dataType:"html" } ), $.ajax( "test4promise2.html",{ dataType:"html" } ) ); promise2.done(function(data1,data2){ alert($(data1).find("h1").length); alert($(data1).find("h1").text());//这里alert 为空字符串,获取不到data1 html 里的内容 $("body").append("<br/>"+" 4 "+$(data1).filter("h1").text()); $("body").append("<br/>"+" 5 "+$(data2).filter("h1").text()); }).fail(function(){ alert("fail"); }); </script> </head> <body> </body> </html>
Go 旅城通票 2017-06-26
  • 打赏
  • 举报
回复
引用 3 楼 LSSSSSS 的回复:
[quote=引用 1 楼 jslang 的回复:] alert($(data1).find("h1").text());
find 没用 !正则表达式就算了,还有其它方法吗[/quote] 没问题啊 $('<div><h1></h1><h1>111</h1></div>').find('h1').text()//111 如果你的h1不在其他容器中用filter或者直接text就行了 $('<h1></h1><h1>111</h1>').filter(':eq(0)').text()//第一个h1没内容显示为空 $('<h1></h1><h1>111</h1>').filter(':eq(1)').text()/111 $('<h1></h1><h1>111</h1>').text()//111
天际的海浪 2017-06-24
  • 打赏
  • 举报
回复
或者用正则表达式在data1字符串中来提取
天际的海浪 2017-06-24
  • 打赏
  • 举报
回复
alert($(data1).find("h1").text());
LSSSSSS 2017-06-24
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
alert($(data1).find("h1").text());
find 没用 !正则表达式就算了,还有其它方法吗

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧