Ajax 调用innerhtml 中的js

12 篇文章 0 订阅
4 篇文章 0 订阅

http://topic.csdn.net/u/20100414/20/40eccdf9-1a92-4ced-8b60-0cc172230b57.html?seed=1463081105&r=64678964#r_64678964

 

这段时间碰到上面所讲的问题,经过一翻波折总算是找到解决的方法,记录下来先。

 

再次保存留底:

 

程序的思想如下:

A.asp
<script>
function createhttpxml(){...}
function select(selectname,selectid){
var x=new createhttpxml()
...
x.open(get,b.asp,true)
x.send(null); 

}
  <input name='os' type='hidden' value='0' ><input name='os1' type='text' value=''>
  <a href='#' οnclick="javascript:selecta('"&rs("software_name")&"','"&rs("software_id")&"')">os</a>
<div id='content1'></div>

B.asp
sqlstr="select * from tablea where fielda="&software_id 
rs.open sqlstr,conn,1,1
do while not rs.eof
  response.write "<a href='#' οnclick=""javascript:selectvar(var1,var2,var3);"">"&rs("fieldb")&"</a>"
  rs.movenext
loop
rs.close
response.write "<script>function selectvar(var1,var2,var3){...}</script>"

为什么我在做A.asp点击selecta 时b.asp中的循环执行了结果也出来了,但是后面的<script>...</script>就不执行输出到A.asp的页面上来?而且我点击selectvar时浏览器报错讲缺少对象,我查看源文件发现没有后面的这个javascript脚本。
今天把完整的程序整出来,

JScript code
   
   
// publicfunc.js ***************part of all ************ function createXMLHttpRequest(){ try { xmlhttp = new ActiveXObjec( " Msxml2.XMLHTTP " ); } catch (e) { try { xmlhttp = new ActiveXObject( " Microsoft.XMLHTTP " ); } catch (e){ try { xmlhttp = new XMLHttpRequest(); } catch (e){} } } return xmlhttp; } function configvar(varfield,mainkey,modkey){ var xmlhttp = createXMLHttpRequest(); var content = document.getElementById( " content1 " ); content.style.display = " inline " ; xmlhttp.onreadystatechange = function () { if ( 4 == xmlhttp.readyState) { if ( 200 == xmlhttp.status) { document.getElementById( " content1 " ).innerHTML = xmlhttp.responseText; } else { alert(xmlhttp.status); } } } var url = " selectvar.asp?modkey= " + modkey + " &mainkey= " + mainkey + " &varfield= " + varfield; xmlhttp.open( " get " ,url); xmlhttp.send( null ); }

 

VBScript code
   
   
' human_config.asp Part of main < meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " > < ! -- #include file = " conn.asp " --> < ! -- #include file = " publicfunc.asp " --> < ! -- #include file = " sytable.asp " --> < ! -- #include file = " publicfunc.js " --> < body > < div id = " tableContainer " class = " tableContainer " > < table border = " 0 " cellpadding = " 0 " cellspacing = " 0 " width = 100 % class = " scrollTable " > < thead class = " fixedHeader " > < % response.write " <th><a href='human_config.asp?modkey=report&order=Username'>User Name</a></th> " response.write " <th><a href='human_config.asp?modkey=report&order=Position'>Position</a></th> " response.write " <th><a href='human_config.asp?modkey=report&order=Department'>Department</a></th> " response.write " <th><a href='human_config.asp?modkey=report&order=Company'>Company</a></th> " response.write " <th><a href='#'>SoftwareConfig</a></th> " response.write " <th><a href='#'>MachineConfig</a></th> " response.write " </tr> " response.write " </thead> " response.write " <tbody class='scrollContent'> " dim mainkey,modkey mainkey = request( " mainkey " ) modkey = request( " modkey " ) set rs = server.CreateObject( " adodb.recordset " ) select case modkey case " report " order = request( " order " ) select case order case " Username " sqlstr = " select * from clinet_config_view order by cuser_name " case " Position " sqlstr = " select * from clinet_config_view order by cposition " case " Department " sqlstr = " select * from clinet_config_view order by department " case " Company " sqlstr = " select * from clinet_config_view order by company,department,cuser_name " case else sqlstr = " select * from clinet_config_view order by company,department,cuser_name " end select rs.open sqlstr,conn, 1 , 1 do while not rs.eof response.write " <tr><td> " & rs( " cuser_name " ) & " </td><td> " & rs( " cposition " ) & " </td><td> " & rs( " department " ) & " </td> " response.write " <td> " & rs( " company " ) & " </td> " response.write " <td><a href='human_config.asp?modkey=softmodfiy&mainkey= " & rs( " cuser_id " ) & " '>Config Software</a></td> " response.write " <td><a href='human_config.asp?modkey=hardmodfiy&mainkey= " & rs( " cuser_id " ) & " '>Config Hardware</a></td> " response.write " </tr> " if err then response.write err.description response.end end if rs.movenext loop rs.close case " softmodfiy " sqlstr = " select * from soft_type_table " rs.open sqlstr,conn, 1 , 1 if rs.eof then response.write " <script language='javascript'>alert('Found the Record');history.go(-1);</script> " response.end else response.write " <form id='form1' name='form1' action='human_config.asp?modkey=softsave&mainkey= " & mainkey & " ' method='post'> " do while not rs.eof response.write " <tr> " response.write " <td colspan=3 align='right'><a href='#' οnclick=""javascript:configvar(' " & rs( " soft_type_name " ) & " ', " & rs( " soft_type_id " ) & " ,'software');"">Config " & rs( " soft_type_name " ) & " </a> " response.write " <input name=' " & rs( " soft_type_name " ) & " ' type='hidden' value='0' ></td><td colspan=3 align='left'> " response.write " <input name=' " & rs( " soft_type_name " ) & " 1' type='text' size='20' value=''> " response.write " </td></tr> " rs.movenext loop response.write " <tr align='right'><td colspan=3 ><input type='submit' value='Modifly' οnclick='checkt();'></td><td colspan=3><input type='button' value='Close' οnclick='self.close();return false;' ></td></tr> " response.write " </form> " response.write " <tr><td colspan=6><span id='content1' display: none;>Select...</span></td></tr> " end if rs.close end select


//selectvar.asp

VBScript code
   
   
< ! -- #include file = " conn.asp " --> < % Response.Charset = " GB2312 " set rs = server.createobject( " adodb.recordset " ) modkey = request( " modkey " ) mainkey = request( " mainkey " ) varfield = request( " varfield " ) select case modkey case " software " sqlstr = " select * from software_view where software_type= " & cint (mainkey) rs.open sqlstr,conn, 1 , 1 str = " <table><tr><td>Software Name</td><td>Software Type</td><td>Software Series</td></tr> " do while not rs.eof str = str & " <tr><td><a href=""javascript:selectvar( " & rs( " software_id " ) & " ,' " & varfield & " ',' " & rs( " software_name " ) & " ')""> " & rs( " software_name " ) & " </a></td><td> " & rs( " soft_type_name " ) & " </td><td> " & rs( " software_series " ) & " </td></tr> " rs.movenext loop rs.close case else str = " Can't found ! " end select str = str & " <script>function selectvar(varid,varname,varfield){document.form1. " & varfield & " .value=varid;document.form1. " & varfield & " 1.value=varfield;}</script> " response.write str % >
我想做到的是在selectvar.asp中执行javascript的selectvar()时可以选中相对应的ID和名称。
但实际是执行报错:
Line:1
Char:1
Code:0
Error:缺少对象
网址:http://192.168.1.1/human_config.asp?modkey=softmodfiy&mainkey=2
我想应当是下面的这段javascript没有执行,有没有大侠帮助看下,如何调用才能获取到javascript脚本
"<script>function selectvar(varid,varname,varfield){document.form1."&varfield&".value=varid;document.form1."&varfield&"1.value=varfield;}</script>"

我有个简单的办法就是将要选中的ID先输出到public.js中,但如果数据库中soft_type_table的内容发生变化就需要增加相应的ID,这会不方便也会造成出错缺少对象。
   
   
经过简单修改后,可以达到我的目标了。

JScript code
           
           
function configvar(varfield,mainkey,modkey){ var xmlhttp = createXMLHttpRequest(); var content = document.getElementById( " content1 " ); content.style.display = " inline " ; xmlhttp.onreadystatechange = function () { if ( 4 == xmlhttp.readyState) { if ( 200 == xmlhttp.status) { // document.getElementById("content1").innerHTML=xmlhttp.responseText; getinnerHTML(document.getElementById( " content1 " ),xmlhttp.responseText); } else { alert(xmlhttp.status); } } } var url = " selectvar.asp?modkey= " + modkey + " &mainkey= " + mainkey + " &varfield= " + varfield; xmlhttp.open( " get " ,url); xmlhttp.send( null ); } function getinnerHTML (el, htmlCode) { var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf( ' msie ' ) >= 0 && ua.indexOf( ' opera ' ) < 0 ) { htmlCode = ' <div style="display:none">for IE</div> ' + htmlCode; htmlCode = htmlCode.replace( / <script([^>]*)> / gi, ' <script$1 defer> ' ); el.innerHTML = htmlCode; el.removeChild(el.firstChild); } else { var el_next = el.nextSibling; var el_parent = el.parentNode; el_parent.removeChild(el); el.innerHTML = htmlCode; if (el_next) { el_parent.insertBefore(el, el_next) } else { el_parent.appendChild(el); } } return el }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值