关于ASP+ajax异步修改的问题

点击要修改的内容,出现输入框(框中有原先的内容),输入完新的内容后,鼠标点击其他地方,无刷新提交并显示新的内容
我这个代码点击后是出现了文本框,但是改了内容后,点其他地方,他不会提交,一直是文本框,请高手们不吝赐教,最好把代码贴出来,小弟拜谢!~~
<script language="javascript">
var req;
var gID;
function init(){
if(window.XMLHttpRequest){
req=new XMLHttpRequest();
}
else if(window.ActiveXObject){
req=new ActiveXObject("Microsoft.XMLHttp");
}
}

function changeToInput(id){
var oId=document.getElementById(id);
var value=oId.value;
oId.outerHTML="<input type='text' id='"+id+"' value='"+value+"' onblur=change(this.id) size=3 />"
}

function change(id){
var oId=document.getElementById(id);
var px=oId.value;
gId=oId.id
init();
url="pro_px.asp?id="+id+"&px="+px;
req.open("GET",url,true);
req.onreadystatechange=callback;
req.send(null);
}

function callback(){

if(4==req.readyState){
if(200==req.status){

var oId=document.getElementById(gId);
var value=oId.value;
oId.outerHTML="<span style='' id='"+gId+"' value='"+value+"' onclick=changeToInput(this.id)>"+value+"</span>"
}
}
}
</script>
<%do while not rs.eof%>
<tr class="tdbg">
<td width="39" align="center" bgcolor="#ECF5FF"><%=rs("id")%></td>
<td height="90" align="center" valign="middle" bgcolor="#ECF5FF"><img src="../<%=rs("cpurl")%>" width="100" height="80" border="0" /></td>
<td align="center" bgcolor="#ECF5FF"><span id="<%=Rs("id")%>" value="<%=Rs("px")%>" onclick="changeToInput(this.id)"><%=Rs("px")%></span></td>
<td align="center" bgcolor="#ECF5FF"><%=rs("cpname")%></td>
<td align="center" bgcolor="#ECF5FF"><%=rs("times")%></td>
<td width="111" align="center" bgcolor="#ECF5FF">| <a href="pro_modi.asp?ID=<%=rs("id")%>">修改</a> | <a href="pro_Del.asp?ID=<%=rs("ID")%>&Action=Del" onClick="return ConfirmDel();">删除</a></td>
</tr>
<%
i=i+1
if i>=MaxPerPage then exit do
rs.movenext
loop
%>

处理页面
<!--#include file="conn.asp"-->
<%id=request("id")
px=request("px")
set rs=server.createobject("adodb.recordset")
sql="select * from cp where id="&id
rs.open sql,conn,1,3
rs("px")=px
rs.update
end if
rs.close
set rs=nothing
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
'-------------------------------------------
response.Charset="GB2312" '//数据返回的编码类型 显示中文数据必须
'-------------------------------------------
%>

因为不能测试你服务端的程序,所以只对你客户端脚本代码进行了修改,经测试完全能达到你的要求,如果你用以下代码还是有问题,就要检测你的 pro_px.asp 是否正常工作 了!!
<script language="javascript">
var req;
var gID;
function init(){
if(window.XMLHttpRequest){
req=new XMLHttpRequest();
}
else if(window.ActiveXObject){
req=new ActiveXObject("Microsoft.XMLHttp");
}
}

function changeToInput(id){
var oId=document.getElementById(id);
var value=oId.value;
oId.outerHTML="<input type='text' id='"+id+"' value='"+value+"' onblur=change(this.id) size=10 />"
}

function change(id){
var oId=document.getElementById(id);
var px=oId.value;
//以下放异步处理代码 因为无测试所以注掉,正式使用请取消注释,并注掉测试代码
//init();
gId=oId.id
//init();
//url="pro_px.asp?id="+id+"&px="+px;
//req.open("GET",url,true);
//req.onreadystatechange=callback;
//req.send(null);
callback();//此句是测试代码
}

function callback(){
//正式代码请取消以下注释
//if(4==req.readyState){
//if(200==req.status){
var oId=document.getElementById(gId);
var value=oId.value;
oId.outerHTML="<span style='' id='"+gId+"' value='"+value+"' onclick=changeToInput(this.id)>"+value+"</span>"
//}
//}
}
</script>
<table border="1" width="600">
<tr class="tdbg">
<td width="39" align="center" bgcolor="#ECF5FF">10001</td>
<td height="90" align="center" valign="middle" bgcolor="#ECF5FF">112</td>
<td align="center" bgcolor="#ECF5FF"><span id="10001" value="aabbc" onclick="changeToInput(this.id)">ccccc</span></td>
<td align="center" bgcolor="#ECF5FF">aaaa</td>
<td align="center" bgcolor="#ECF5FF">bbbbb</td>
<td width="111" align="center" bgcolor="#ECF5FF">| <a href="pro_modi.asp?ID=10001">修改</a> | </td>
</tr>
</table>
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-25
AJAX是客户端与服务端进行的数据层交互。也就是说客户端请求的只是服务端的数据,而显示与定位等都并由客户端进行的显示。大量的定位或显示代码出现在客户端时称之为“肥客户端”设计,而如果同时返回定位,显示格式化时,代码还是压在了服务端,这种情况称为“瘦客户端”设计。但两者的区别是数据的交换量变大了。

既然是数据层的交互,那么实际上编码并不是一个客户端所了解的事。所以应该在后台支持文件中将其编码设定好的。也就是后台如果是gb2312或是gb65001情况,前台接收时才会改动相应的编码而不会出现乱码的现象。

好在GB2312是一种汉语的页面编码标准,是双字节标准。如果后台是使用了这样的编码时,前台接收时本来应该同样使用GB2312相对应的,但双字节的处理方式恰好能使用UFT-8,ISO-8859,Unicoded等形式是可以接收到不乱码的中文字符的。但不是一种自适应,而中文进行组码时如果前一个字节在于80H时自动将两个字节做为一个汉字,汉字编码首位是1,所以我们常说汉字编码是负数。所以几种情况都这样解释,才会出现中文不乱码。但由于编码不仅仅是汉字一项,同时编码规则中含类似日期格式,小数点格式,币种表示方式等等各方面的内容。而这些并不见得是相同的。当然对于多语言包的机器,如果使用了其他国家的语言,而客户机区域文化不同时会显示成其他的语言版本。也就是说,不管你使用了什么编码方式,选择语言才是客户机自适应的。比如,你后台用的是GB2312,通知前台使用了GB2312,而在前台页面中使用UFT-8或是unicoded时,中国的机器访问是出现的中文,但日期格式可能不符合中国的习惯,货币等也是。此时若是国外比如日本,朝鲜等,他们访问会出现他们的语言习惯。但如果前台是gb2312至少是不管你是什么国家,都是出现的中文编码。

所以,你的第一个问题,AJAX是数据的一种格式,对于数据的编码应该是有目的的,AJAX只是一个网络上传送的数据,它本身没有所谓的编码的。所以也不会出现AJAX自适应这样的方式。

第二个问题,同理,客户机在进行浏览时,根据它们具体的文化的不同,对任何网页都是调用相应的文化页面。除非你事先规定了编码。所以对于多语言的网页,是根据不同的文化而转向了不同的链接。如果没有设置编码时,或是没有安装相应的语言包时,会出现乱码,而就是与浏览器使用不同文化而产生的。所以他们都不会转的。

具体说来,AJAX涉及到的编码范围与正常网页涉及的没有什么区别。所以可以说AJAX没有功能,它只是利用现有的几种技术手段对服务器与客户机而形成的一种无刷新的数据交换而已。

ASP.NET C# AJAX 异步处理数据的问题
1.这个问题和ajax关系不大。你要是觉得和ajax有关系,你可以自己写ajax代码异步发起请求。2.你的测试不能只看运行周期。需要关注服务器端接受请求时间、暂停时间、返回时间。3.影响返回时间的有IE,请求周期,IIS队列,IIS处理。4.解决ajax返回非异步的现象。我是通过在服务器端启用多线程处理,使得页面...

ajax请求乱码怎么解决(ajax请求乱码怎么解决问题)
在用AJAX进行异步请求(asp)的时候,出现了乱码问题如果没有设置编码时,或是没有安装相应的语言包时,会出现乱码,而就是与浏览器使用不同文化而产生的。所以他们都不会转的。具体说来,AJAX涉及到的编码范围与正常网页涉及的没有什么区别。ajax默认的编码方式是UTF-8中文乱码是常出现的问题。你可以在...

asp异步操作怎样判断服务器端的前一个事件执行完毕了
如果你想实现这个功能的话,只有用Ajax异步传回服务器,否则,服务器是无法收到你关闭窗体这个请求的 或者,你程序里面让这个页面不停的向数据库的一个字段修改日期,另一个程序不停判断,看这个时间是否被修改,如果这个时间没有被修改,希望对你有帮助!

asp中使用AJAX为什么会出现这样的异常求大神指点
您好,我在别的论坛也看到您的问题,我来为您解答:<asp:ScriptManager ID="ScriptManager1" runat="server"><\/asp:ScriptManager> 这个放在UpdatePanel的外面试试 还有你那个后台的弹对话框用了无刷新控件之后就不能用了 可以换成 ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "",...

asp.net项目中引用ajax后,服务器端函数得不到页面控件值
这是因为服务端控件在处理后把它本身的ID改变了,所以你在ajax中是找不到这个ID了,你查看下源码就知道服务器将Textbox的ID改成什么样的了.你的AJAX端也需要调整下就可以了

请高手评论一下,关于ajax与asp.net我的观点对吗?
尽管aspx中有大量runat server和eval数据,但不会对页面设计有太大的影响。因为web页面是具有“弹性”的(不像印刷品),所以数据有多有少有长有短很正常。。。当然如果项目整体设计不到位,时常改动,一会添加个控件,一会多加点数据,那就是另一回事了。所以教材中讲的应该是开发过程中的“分离”,而...

求助:asp同页面异步处理的问题 q-719926247
这个是用JS处理的同页面信息处理,就是在FORM加个标签,动作指向本页就行了,在本页再写个判断,作处理

求ASP实例:通过异步加载实现类似微博上拉刷新功能,在客户端已经实现加载...
用Jquery吧,示例如下 .ajax({ type:"POST",cache:false,timeout:3000,url:"getinfo.jsp",data:{"act":"selectkf","id":this.id},dataType:"json",success:function(json){ if(json.err==0){ fengge.str="×选择要显示的客服"+json.userlist+"提交";fengge.show(220,160)}else if(...

用asp+access+ajax制作仿百度搜索框,提示字出现乱码,自解决?
应该是编码问题,比如数据库存的是不是utf-8格式的,然後页面设置的是GBK或者其它格式,这样如果调用出来,乱码很正常,检查一下然後统一编码应该就行了

如何用jquery实现用ajax读取数据,修改后再返回?
我想你理解错了,ajax一半是异步发送连接到后台,通过动态语言连接数据库读取好数据,以表格的方式组合数据返回到ajax的回调函数里头,直接添加到页面的dom上的 .get("test.asp", data:{id:01}, function(data){data.appendTo(".div");\/\/将返回的结果添加到页面上})asp:< id=request("id")sql=...

相似回答