【问题】=======动态改变js链接地址实现无刷新问题=======

wujinjian2008n 2010-03-16 10:53:26
1.htm源码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
<script id="a" type="text/javascript" ></script>

<script type="text/javascript">
function s()
{
document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;

abc();
}
</script>
</head>
<body>
<input type="text" id="tx">
<input type="button" onclick="s()" value="确定">
</body>
</html>


Abc.aspx 源码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Abc.aspx.cs" Inherits="Default2" %>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");
}
}



问题是,我一次点击按钮时报错,再点击一次才能获到值。
我的判读是第一次点击按钮时 Abc.apsx 页面的load事件还没执行完,所以就调不到 js 的abc()
方法。
怎么解决这个问题啊??
...全文
388 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
火狐上,第一次可以动态加载,以后再动态加载就不行了

document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;
wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
谢谢 阿非!

再问一下,在火狐上第一次可以,以后就不行了,怎么解决啊??
ws_hgo 2010-03-16
  • 打赏
  • 举报
回复
看非哥解决问题!
阿非 2010-03-16
  • 打赏
  • 举报
回复
Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");

=》

Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')} callBack();");
Response.End();

<script type="text/javascript">
function s()
{
document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;

abc();
}
</script>

=>

<script type="text/javascript">
function s()
{
document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;

}
function callBack()
{
abc();
}
</script>
wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
更严重的问题:在火狐上不行,火狐上动态改变js链接地址好像不行
wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
稍微改动一下就可以了,但感觉不好。改动如下:


我把 1.html 中的 s()方法替换成如下:

function f()
{
document.getElementById("a").src="Abc.aspx?v="+document.getElementById("tx").value;

a();
}

function a()
{
timer=setTimeout("a()",50);

if((typeof js)+""!="undefined")
{
abc();

//
clearTimeout(timer);
js=undefined;
}
}


把Abc.aspx.cs 代码替换成如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("function abc(){alert('"+Request.QueryString["v"]+"')}");

Response.Write("var js='js'");
}
}

wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
顶上去
wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
明白了。

再次谢谢 阿非!!
阿非 2010-03-16
  • 打赏
  • 举报
回复
午休去吃饭了


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>

<script type="text/javascript">
function s() {
replaceScript('a', "JavaScript.aspx?v=" + document.getElementById("tx").value);
}
function callBack() {
abc();
}
function replaceScript(id, src) {
var newScript = document.createElement('script');
var oldScript = document.getElementById(id);
newScript.type = "text/javascript";
newScript.src = src;
newScript.id = id;
document.getElementById('div').replaceChild(newScript, oldScript);
}
</script>

</head>
<body>
<div id="div">

<script id="a" type="text/javascript"></script>

</div>
<input type="text" id="tx">
<input type="button" onclick="s()" value="确定">
</body>
</html>

wujinjian2008n 2010-03-16
  • 打赏
  • 举报
回复
阿非 在吗?

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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