前台取后台数据,谁会!

s2009xg 2009-03-19 06:49:36
做一个在线html editor(js)
有以下问题,求解!
<script type="text/javascript" language="javascript">
function InsertsImageGo()
{
这行window.open("upload.aspx")
var parm = upload.aspx上传的文件名(带路径)
//obj就不写定义了,关键是上两行的实现想求大家帮忙!
obj.execCommand('InsertImage',false,parm);
}
</script>

<img alt="插入图片" src="images/img.gif" onclick="InsertsImageGo()"/>
...全文
352 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
s2009xg 2009-03-20
  • 打赏
  • 举报
回复
自己解决了,非常感谢大家的帮助!
s2009xg 2009-03-20
  • 打赏
  • 举报
回复
因为window.open 会新建窗口,并且会被屏蔽
s2009xg 2009-03-20
  • 打赏
  • 举报
回复
我现在用window.open 都OK了,但是我想实现
类似以下图片的打开窗口效果,怎么实现?就是好像alert()
http://lh3.ggpht.com/_Smhp8r-mqbk/ScL3Q4wd-eI/AAAAAAAAADc/7cNKdB9P9ZE/open.jpg
yangdatao1987 2009-03-20
  • 打赏
  • 举报
回复
17楼的说的没错!
zzxap 2009-03-20
  • 打赏
  • 举报
回复
[code=C#]
ajaxpro实现前台后台传数据
关键词: ajaxpro 传递参数
1,建立.net2005的网站test。

2,在bin文件夹下引用ajaxpro.dll(网站下载),或者直接把bin目录放到test网站之下。

3,在webconfig中增加如下代码

<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>

4,在后台cs中写代码:

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}

[AjaxPro.AjaxMethod]
public string senddata(string rq)
{
rq = "2006";
string str;
str="sdfsdfsdfsdfsfdsffdfs"+rq;
return str;
}
}
5,在前台写代码:

<script>
function diaoyong()
{
var c;
c=hello._Default.senddata("2006",handle);

//注意:传递参数,senddata后面的“2006”作为前台的数据传递给后台。后面的handle函数
//是处理的函数,默认为这个,其实最好不用这么写,不过不这么写调试打印出来的有问题,
// 疑惑ing。
}

function handle(res)
{
alert(res.value);
}


</script>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="search" onclick="diaoyong();" />
<input id="Text1" type="text" /></div>
</form>
</body>

//疑惑1:必须写handle函数,否则打印出来的是object object,不知为什么。
//疑惑2:如果在.cs中写上了命名空间:[AjaxPro.AjaxNamespace("hello")]
//则在js中调用时候写上:hello._default.senddata()时候会出现问题,说是为空或者不是对象





采用AjaxPro.dll,
如果是.NET 2.0,请采用AjaxPor.2.dll

注意事项
1.引用using AjaxPro;
2.在Web.Config文件中 </system.web> 的前面加上
<httpHandlers>
<add verb= "POST,GET " path= "ajaxpro/*.ashx "
type= "AjaxPro.AjaxHandlerFactory, AjaxPro "/>
</httpHandlers>
3.前台的form必须是runat=server,否则报错 ***********重要************

4. *.aspx.cs文件
在命名空间下一行,类定义的上一行加上
[[AjaxPro.AjaxNamespace( "当前类名 ")]
注:此适应版本 6.10.6.1 ,不同版本有些不同

在定义的方法的上一行加上[AjaxPro.AjaxMethod] 表示该方法是Ajax方法

在Page_Load ( )方法内加上注册该类:
AjaxPro.Utility.RegisterTypeForAjax(typeof(定义Ajax方法所在的类名));


5: 在javascript中使用Ajax方法:
Ajax类.Ajax方法(参数, 回调函数名称)



相关示例:


前台----javascript -----
function DelRec(){
var n=1;
if (n <1) return;
var ssid=document.getElementById( 'dgrid ').rows[n].cells[0].innerHTML;

if(confirm( "Are You Sure Delete Current Select Record, ID= " + ssid)==false) return;
var XmlStr= " <?xml version= '1.0 ' encoding= 'UTF-8 '?> <REC> <SID> " + ssid + " </SID> </REC> ";
WebAjaxAct.DelRec(XmlStr,DelTableRow);
}

function DelTableRow(result){
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
//alert( "返回值: " + result.value);
xmlDoc.loadXML(result.value);
var n=xmlDoc.documentElement.childNodes[0].childNodes[0].nodeValue;
//删除表格一行
}


***.aspx.cs文件 (请注意*********地方的代码,并对照上面的描述)
-------- C# ------


using AjaxPro;

namespace WTest{

[AjaxPro.AjaxNamespace( "WebAjaxAct ")] **************
public class WebAjaxAct : System.Web.UI.Page
{

private void Page_Load(object sender, System.EventArgs e) {
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebAjaxAct)); ***********

}

[AjaxPro.AjaxMethod] ************
public string UpdateRec(string szXML){
其它处理

string XmlStr= " ";
//给XmlStr赋值
return XmlStr;
}
}
}


AjaxPor + XML 轻松实现无刷新分页
原理,利用AjaxPro的后台方法返回分页的XML,再利用XML2Table实现前台显示

<INPUT onclick= "ShowPage( '1 ') " type= "button " value= "First ">
<INPUT onclick= "ShowPage( '2 ') " type= "button " value= "Prev ">
<INPUT onclick= "ShowPage( '3 ') " type= "button " value= "Next ">
<INPUT onclick= "ShowPage( '4 ') " type= "button " value= "Last ">
<asp:datagrid id= "dgrid " runat= "server " > </asp:datagrid >

function ShowPage(i)
{
if (i== "1 ") curpage=1;
if (i== "2 ") curpage--;
if (i== "3 ") curpage++;
if (i== "4 ") curpage=npage;

if(curpage <=1) curpage=1;
if(curpage> npage) curpage=npage;

AjaxPro类.返回当前分面的方法(curpage,ShowTable=function (result){
if (result.value!=null){XML2Table( 'dgrid ',result.value);
}
);
}


function XML2Table(tb,szxml){
if (szxml==null || szxml== " ") return;
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
xmlDoc.async = false;
xmlDoc.loadXML(szxml);

if(xmlDoc.parseError.errorCode!=0){
// var txt= "Return Data Format Error:"r"n"r"n ";
// txt=txt+ "Error Code: " + xmlDoc.parseError.errorCode + ""n ";
// txt=txt+ "Error Reason: " + xmlDoc.parseError.reason;
// txt=txt+ "Error Line: " + xmlDoc.parseError.line;
// alert(txt);
return;
}

var x=xmlDoc.documentElement;
var m=x.childNodes.length;
if (m==0) return;
var n=x.childNodes[0].childNodes.length;

var t=document.getElementById(tb);
for(var i=t.rows.length-1;i> 0;i--)t.deleteRow(i);

var tr;
var td;

for (var j=0;j <m;j++){
tr=t.insertRow(-1);
//tr.height=16;
for (i=0;i <n;i++){
td=tr.insertCell(-1);
try{
td.innerHTML=x.childNodes[j].childNodes[i].childNodes[0].nodeValue;
}
catch(err){td.innerHTML= " ";}
}
}
}



[/CODE]
paladinzhu 2009-03-20
  • 打赏
  • 举报
回复
13楼的是正解,听他的不会错的,其它的有几个回答是牛头不对马嘴,你越搞会越湖头的。
icotfeng 2009-03-20
  • 打赏
  • 举报
回复
要在upload.aspx中加 <base target ="_self" />
s2009xg 2009-03-19
  • 打赏
  • 举报
回复
我用window.showModalDialog打开的窗体,因为window.open能被屏蔽,所以
upload.aspx页用以下代码就不好使了,以下代码只能用在window.open打开的页
<script>window.opener.调用页函数;window.close();</script>

? 用window.showModalDialog打开upload.aspx
如何<script>??.调用页函数;window.close();</script>
s2009xg 2009-03-19
  • 打赏
  • 举报
回复
firefox下行了,IE下总是新开一个upload.aspx并且没有关闭
endyli 2009-03-19
  • 打赏
  • 举报
回复
这个东西不用ajax的, ajax得实现无刷新上传,那就麻烦了
如下解决:

<script type="text/javascript" language="javascript">
function InsertsImageGo()
{
window.open("upload.aspx")
}
</script>
<img alt="插入图片" src="images/img.gif" onclick="InsertsImageGo()"/>

在upload.aspx.cs写完上传代码后加上:
Page.RegisterStartupScript("ss2","<script>window.opener.document.getElementById('你的obj的id').execCommand('InsertImage',false,"+你的文件名+"); window.close();</script>");
ViewStates 2009-03-19
  • 打赏
  • 举报
回复
A:
<html>
<script>
function Method()
{
alert('hello world');
}
</script>
<a onclick='window.open('b.aspx');'>B here</a>
</html>


B:
CS:

ClientScript.RegisterStartupScript(this.GetType(), "abcdefg", "window.opener.Method();", true);
sjt000 2009-03-19
  • 打赏
  • 举报
回复
ls的肯定可以的了,不用ajax~~
s2009xg 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyq11 的回复:]
A页面打开upload.aspx,在upload.aspx里通过Response.Write(" <script>window.parent.AA(1); </script>");
调用A里AA函数。
[/Quote]

目前按以上测试中。。。,希望有经验的朋友跟进!
zzxap 2009-03-19
  • 打赏
  • 举报
回复
用Ajaxpro
wuyq11 2009-03-19
  • 打赏
  • 举报
回复
A页面打开upload.aspx,在upload.aspx里通过Response.Write("<script>window.parent.AA(1);</script>");
调用A里AA函数。
wenblue7 2009-03-19
  • 打赏
  • 举报
回复
用ajax
可以实现 啊
cnidb 2009-03-19
  • 打赏
  • 举报
回复
upload.aspx要返回数据的
s2009xg 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sjt000 的回复:]
不是很明白你的意思。
window.open("upload.aspx")
之后,不是应该在upload页面上处理么,在那个页面可以返回数据啊?
[/Quote]

你说的对,是在upload.aspx上处理,但是要把数据返回到调用它的页面
yupian 2009-03-19
  • 打赏
  • 举报
回复
我也想知道
floadcloud 2009-03-19
  • 打赏
  • 举报
回复
帮顶
加载更多回复(2)

62,047

社区成员

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

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

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

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