首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

$.post返回页面带有<script>标签的div元素解析,拿不到<script>标签解决方法

2013-10-21 
$.post返回页面带有script标签的div元素解析,拿不到script标签JSP页面源码:%@ page contentTypetex

$.post返回页面带有<script>标签的div元素解析,拿不到<script>标签
JSP页面源码:


<%@ page contentType="text/html;charset=UTF-8" trimDirectiveWhitespaces="true" import="java.io.*,java.util.*"%>
<%@ include file="/common/taglibs.jsp"%>
<!DOCTYPE html>
<html id="htmlObject">
<head>
<title>123</title>
<%@ include file="/common/resource.jsp"%>
<script type="text/javascript">
$(document).ready(function(){
htmlTest();
});
function htmlTest() {
alert($("#valiSource").html());
}
function languageSelecter_onChanged(control) {
$control=$(control);
$form = $("#form-login");
$.post($control.attr("href"), $form.serialize(), function(html) {
//修改ajax加载为局部form-login加载,避免整个html中head部分文件资源重加载
$html=$(html);
//alert(html);
alert($html.find("#valiSource").html());
$("#divForm").html($html.find("#divForm").html());
//$("body").html(html);
$form.validationEngine({
autoPositionUpdate:true,
focusFirstField:true,
scroll:true
});
});
return false;
}
</script>
</head>
<body>
<form id="form-login" action="login!login.action" successAction="index.action" method="post">
<div id="divForm" align="center">
<div id="valiSource">
aaa
<script src="${ctx}/static/jquery-Validation-Engine/js/languages/jquery.validationEngine-${sessionScope.WW_TRANS_I18N_LOCALE}.js" type="text/javascript"></script>
</div>
<div style="width:350px" class="well">

<div  class="control-group">
<span id="errorMessage" class="error">
<s:property value="successErrorForm.errorMessage"></s:property>
</span>
</div>
<div class="control-group">
<span class="span1"><s:text name="label.login.name" /></span>
<s:textfield id="name" name="user.name" cssClass="validate[required]" />
</div>
<div class="control-group">
<span class="span1"><s:text name="label.login.password" /></span>
<s:password id="password" name="user.password" cssClass="validate[required]"/>
</div>
<div class="control-group">
<span class="span1"><s:text name="label.login.language" /></span>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<s:bean id="locales" name="com.wizarpos.tms.common.language.LanguageSelectList">
<s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/>
</s:bean>
<s:select id="languageSelecter" href="login!changeLanguage.action" list="#locales.locales" listKey="value" listValue="key" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE" name="request_locale" onchange="languageSelecter_onChanged(this)"/>
</div>
<div class="control-group">
<button type="submit" class="btn btn-primary">
         <s:text name="label.login.login" />
      </button>
<!--       <button type="button" onclick="closeme();" class="btn btn-primary"> -->
<%--          <s:text name="label.login.quit" /> --%>
<!--       </button> -->
</div>
<div class="control-group">
<a href="#" id="modifyPassword" url="authority/user-modify-password!input.action" dialogWidth="500" dialogHeight="400">
         <s:text name="label.login.modifyPassword" />
      </a>
      <a href="#" id="sendPassword" url="authority/user-send-password!input.action" dialogWidth="500" dialogHeight="200">
         <s:text name="label.login.sendPassword" />
      </a>
</div>
</div>
</div>
</form>
</body>
</html>


首先在刷新页面时,htmlTest()对话框显示结果为
aaa
<script src="/tms/static/jquery-Validation-Engine/js/languages/jquery.validationEngine-en_US.js" type="text/javascript"></script>

然后点击语言切换,post返回切换语言后的本页源码alert(html):

<!DOCTYPE html>
<html id="htmlObject">
<head>
<title>123</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-store"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/><link href="/tms/static/bootstrap/2.1.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />


...
<script src="/tms/static/jquery-Validation-Engine/js/jquery.validationEngine.js" type="text/javascript"></script>
<script src="/tms/static/jquery-layout/1.2.0/js/jquery.layout.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
htmlTest();
});
function htmlTest() {
alert($("#valiSource").html());
}
function languageSelecter_onChanged(control) {
$control=$(control);
$form = $("#form-login");
$.post($control.attr("href"), $form.serialize(), function(html) {
//修改ajax加载为局部form-login加载,避免整个html中head部分文件资源重加载
$html=$(html);
//alert(html);
alert($html.find("#valiSource").html());
$("#divForm").html($html.find("#divForm").html());
//$("body").html(html);
$form.validationEngine({
autoPositionUpdate:true,
focusFirstField:true,
scroll:true
});
});
return false;
}
</script>
</head>
<body>
<form id="form-login" action="login!login.action" successAction="index.action" method="post">
<div id="divForm" align="center">
<div id="valiSource">
aaa
<script src="/tms/static/jquery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script>
</div>
<div style="width:350px" class="well">

<div  class="control-group">
<span id="errorMessage" class="error">
</span>
</div>
<div class="control-group">
<span class="span1">用户名</span>
<tr>
    <td class="tdLabel"></td>
    <td
><input type="text" name="user.name" value="" id="name" class="validate[required]"/></td>
</tr>
</div>
<div class="control-group">
<span class="span1">密码</span>
<tr>
    <td class="tdLabel"></td>
    <td
><input type="password" name="user.password" id="password" class="validate[required]"/></td>
</tr>
</div>
<div class="control-group">
<span class="span1">语言</span>
<tr>
    <td class="tdLabel"></td>
    <td
><select name="request_locale" id="languageSelecter" onchange="languageSelecter_onChanged(this)" href="login!changeLanguage.action">
    <option value="zh_CN" selected="selected">中文</option>
    <option value="en_US">English</option>


</select>
</td>
</tr>
</div>
<div class="control-group">
<button type="submit" class="btn btn-primary">
         登录</button>
<!--       <button type="button" onclick="closeme();" class="btn btn-primary"> -->
<!--       </button> -->
</div>
<div class="control-group">
<a href="#" id="modifyPassword" url="authority/user-modify-password!input.action" dialogWidth="500" dialogHeight="400">
         修改密码</a>
      <a href="#" id="sendPassword" url="authority/user-send-password!input.action" dialogWidth="500" dialogHeight="200">
         找回密码</a>
</div>
</div>
</div>
</form>
</body>
</html>


分析抓取这份html
$html=$(html);
//alert(html);
alert($html.find("#valiSource").html());

却只能拿到
aaa
 <script>标签部分拿不到,求问大神这是什么情况?
jquery JSP元素解析
[解决办法]
.html()方法是会过滤掉脚本,css等这样不安全的代码的。
[解决办法]
你把内容变成一个标签属性存起试试,就像input的value一样,去的时候直接取属性。
例如
<input id="xx" scripts='aaa<script src="/tms/static/jquery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script>'   />

$("#xx").attr("scripts"); 来获取试试

热点排行