关于jQuery ajax返回的data为整个html字符串?

<!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>loading</title>
<script type="text/javascript" src="../jqueryEasyUI/jquery-1.7.2.min.js"></script>

</head>
<body>

<input type="button" id="send" value="Ajax获取" />
<div id="resText"></div>

<script type="text/javascript"><!--
$(document).ready(function(){
$("#send").click(function(){
$("body").load("ajax+json+scroll.html",function(data){alert(data)});
});
});
// --></script>

</body>
</html>
这个是loading界面,想通过点击按钮以后加载另一个页面如下:
<!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>
<style>
*{ padding:0; margin:0; font:Arial, Helvetica, sans-serif; font-size:12px}
</style>
</head>
<body>

<div class="comment">
已有评论:
</div>
<div class="comment">
<h6>张三:</h6>
<p class="para">沙发。</p>
</div>
<div class="comment">
<h6>李四:</h6>
<p class="para">板凳。</p>
</div>
<div class="comment">
<h6>王五:</h6>
<p class="para">地板。</p>
</div>
</body>
</html>
返回的data数据是这个:

整个html都返回来了,我现在将其插入到前一个页面中,用firebug查看,单纯看页面没什么,很正常,但是用firebug看的时候发现这个:

在body中出现了style和其他头部信息,这是个小实验,希望高人可以告诉我一下怎样让返回的数据不包含头部的内容,我试着在url后面加选择器,但是无济于事,还是返回所有的。提出这个疑问主要是我们jsp中这个:

$.ajax({
async:true,
type:'POST',
cache:false,
url:'task.do?method=projectGantt ',//这里的url加选择器也没有用,该怎么办?
data:{'projectId':projectId,'showType':showType},
beforeSend:function(){

var loadingLayer='<div id="loadingLayer" style="position:absolute;width:120px;height:60px;border:#5F9DE8 2px solid;margin:-30px -60px -30px -60px;z-index:4000;left:50%;top:50%;text-align:center;color:#333;font-weight:bold;background:#FFFFFF"><img src="static/images/ajax_loading.gif" border="0" /><div>正在加载...</div></div>';

$('body').append(loadingLayer);
},
success:function(data,textStatus){

$('#loadingLayer').remove();
$('body').html(data)
},
complete:function(data,textStatus){
$('#loadingLayer').remove();

},
error:function(){

}
})
}

第1个回答  2012-09-18
你到底要问什么,我看了5秒钟就没耐心看下去了,简明扼要下

.load()肯定返回html,

而 $.ajax()太低水平(但愿你懂), 基本上都不推荐用,非要用的话最好指定完全的参数

关于你想要什么类型就在dataType里设,但是服务端要返回相关类型哦,要不然会得不到数据哦

$.ajax({
type:'POST',
url:url,
data:data,
success:success,
dataType:dataType
});

推荐你用$.get(),$.post()那些吧追问

可能我写的有些多吧,我的意思是返回的data数据中能不能不要带上<head>里面的东西,刷新这个页面,我只想把内容替换为另一个页面body里面的东西。现在的情况是这个data包含了包括声明在内的很多<head>里面的东西,这样,用firebug查看的时候,节点中会重复出现head标签

追答

如果你直接取另一个页面的内容,而另外一个也面有head的话,肯定会带head的内容,唯一的方法是取回来后在回调里处理取回来的内容吧

本回答被提问者采纳
相似回答