本帖最后由 wlue 于 2021-8-22 08:16 编辑
关键词:JavaScript变量调用、回调函数、ajax修改表格内容
我想用Ajax实现如下图这样的效果:
点击“编辑”按钮,给表格内容加上文本输入框,文本内容处于可编辑状态,同时按钮文字变成“确定”,修改完表格内容后,点击“确定”按钮表格变为正常状态。文字内容变为修改后的新内容。当然静态网页实现这个效果没有啥用,结合Ajax技术才有意义。浏览器端和服务器端功能我都实现了,只是将二者结合在一起的时候,最后一步遇到问题,不能解决,请教各位大侠。
介绍一下我的流程,思路:
用到三个函数:checkstr(str);//用于客户端检验文本内容合法性;ajax(newtext,FID);//用于将修改后的新文本向服务器端传递; edittab(lab,FID);//主函数编辑客户端表格内容;
点击 “编辑”按钮执行 edittab(lab,FID)函数,运行 流程如下
{
得到需修改的单元格对象
得到单元格中原有的文本内容
将原文本内容放入文本输入框中供编辑
更改标签文字状态为“确定”
点击确定按钮执行
得到单元格1中新的文本内容
对新文本内容进行合法性处理、检验
通过合法性检验后,调用ajax(newtext2,FID)函数与服务器端交互,根据服务器端返回结果,做最后一步处理
switch(ajax函数处理结果)
{
case "1" : //服务器端返回结果为“1”时,表示与已有字段重复
alert("与已有字段重复,请重新修改") ;
break;
case "2" : //服务器端返回结果为“2”时,修改成功
td1.innerHTML = newtext2;//单元格中更新文本内容
lab.innerText = "编辑";//更改标签文字为原来状态
lab.onclick = ""; //使标签不再响应点击事件
break;
default: //其他情况,都表示修改不成功
alert("修改不成功!") ;
}
现在,我只贴出关键的 ajax(ypfl,FID) 函数的代码:
ajax函数执行没有问题,服务器端执行会返回两种结果,result = 1 表示与已有字段重复;result = 2 表示修改成功,其他表示更新失败;
我现在遇到的问题是在主函数 edittab(lab,FID) 中无法调用 ajax函数执行结果中的值 result ,用 return 语句也不行,虽然可以把最后的处理语句放入 var result = xhr.responseText; 之后解决问题,但感觉层次有点乱,而且还要重新定义dom对象、js语句等;
我现在的问题就是 在一个函数中如何调用另一个函数内的函数的变量值的问题,在网上搜了一下,提问这个问题的人还挺多,但没有找到满意的答案。而且还牵涉到回调函数的知识,看得一头雾水,短时间难以弄懂,请各位大侠帮忙指教,谢谢了!
|