向zswang提问:如何从主页面post form 数据到 CSDNDialog.js打开的页面里?

adandelion 2009-07-13 05:23:57
向zswang提问:如何从主页面post form 数据到 CSDNDialog.js打开的页面里?


CSDNDialog.js通过嵌入到div里的iframe页面来实现打开新窗口的效果很好。
主页面url传递参数比较少。如何从主页面post form 数据到 CSDNDialog.js打开的页面里?
非常感谢。
...全文
114 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
adandelion 2009-07-14
  • 打赏
  • 举报
回复
由A向B post form里的数据
觉得你有点概念不清
post后,窗体是要重新加载的,
你只要设定A页面Form的Action为B这个页面(比如abc.aspx),target设置为Iframe的name,就实现了你的目的

换句话说,是A页面向B页面post数据,而不是向B这个已经打开的页面post数据,B都已经打开了,怎么可能再post,除非通过js传递
----------------------
我原先post的思路,是要两步,一个是打开B,一个是向B发送post.

target 设置成ifram的name后,如果连续打开B两次,后一次就会把前一次页面给覆盖了。不同打开两个窗口的。我说的就是利用第二次的打开进行post.


谢谢所有人的热情答复

adandelion 2009-07-14
  • 打赏
  • 举报
回复
iframe的页面是可以访问容器页的元素的。
------------------------
这是问题的关键。哎,这个特性以前用过的。当时怎么就没想到呢?非要post数据。直接获取数据即可
<SCRIPT LANGUAGE="JavaScript">
<!--
function GetMainpageForm()
{
var obja = window.parent.document;
if(obja.getElementById("txt1") != null)
{
alert(obja.getElementById("txt1").value );
}
}
//-->

txt1就是A页面里的表单元素。在b页面里直接获得即可了。居然老想着POST.鄙视下自己啊。

游北亮 2009-07-14
  • 打赏
  • 举报
回复
由A向B post form里的数据
觉得你有点概念不清
post后,窗体是要重新加载的,
你只要设定A页面Form的Action为B这个页面(比如abc.aspx),target设置为Iframe的name,就实现了你的目的

换句话说,是A页面向B页面post数据,而不是向B这个已经打开的页面post数据,B都已经打开了,怎么可能再post,除非通过js传递


[Quote=引用 5 楼 adandelion 的回复:]
A:主页面
B: iframe里打开的一个页面

目的:由A向B post form里的数据

A里可以设置form action . form 的target = ifram 的name. 这样即可post数据了。
我的思路感觉可以实现,不过很不好,要先打开B,然后再由A向Bpost form数据。
如何吧这两步合成一部是关键。
[/Quote]
ylzddj 2009-07-14
  • 打赏
  • 举报
回复
呵呵,我也学习了,我是做振动电机网站的,有时候也用到这个呀
王集鹄 2009-07-14
  • 打赏
  • 举报
回复
form不是有target属性吗?提交后跳转的地方,可以利用一下。
adandelion 2009-07-13
  • 打赏
  • 举报
回复
iframe的页面是可以访问容器页的元素的。
---------------
这个句话我再理解下。。。
也就是说 iframe里的页面可以访问 主页面的数据?。。。
考虑下。。。
adandelion 2009-07-13
  • 打赏
  • 举报
回复
不知道上面的有没有看懂,这不是跨域的问题。是如何把主页面的的信息post 打开的新窗口中去。
adandelion 2009-07-13
  • 打赏
  • 举报
回复
A:主页面
B: iframe里打开的一个页面

目的:由A向B post form里的数据

A里可以设置form action . form 的target = ifram 的name. 这样即可post数据了。
我的思路感觉可以实现,不过很不好,要先打开B,然后再由A向Bpost form数据。
如何吧这两步合成一部是关键。
王集鹄 2009-07-13
  • 打赏
  • 举报
回复
最后能提供一个可调试的demo,可能是我的理解能力差,这个问题有点晕
wdx2012 2009-07-13
  • 打赏
  • 举报
回复
将CSDNDialog.aspx做好后命名为 CSDNDialog.js可处理你的请求
王集鹄 2009-07-13
  • 打赏
  • 举报
回复
iframe的页面是可以访问容器页的元素的。
当然可能会碰到跨域的问题,如果主域相同就比较好办
两个网页都重定义域
try { document.domain="csdn.net"; }  catch (ex){};

gongsun 2009-07-13
  • 打赏
  • 举报
回复
...
自定义窗体的最大化、最小化和关闭按钮, C#移动无标题栏窗体的三种代码: C#移动无标题栏窗体的三种代码:第一种采用,需注意窗体上的控件是否把窗体覆盖了。。。MouseDown、MouseMove、MouseUp事件应该是鼠标所处位置最顶层的控件的事件 在窗体的类中声明两个变量 private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 创建该窗体 MouseDown、MouseMove、MouseUp事件的相应处理程序 private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X ; yOffset = -e.Y ; mouseOffset = new Point(xOffset, yOffset); isMouseDown = true; } } private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (isMouseDown) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X, mouseOffset.Y); Location = mousePos; } } private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { // 修改鼠标状态isMouseDown的值 // 确保只有鼠标左键按下并移动时,才移动窗体 if (e.Button == MouseButtons.Left) { isMouseDown = false; } } 第二种调用API 未验证 using System.Runtime.InteropServices; [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); public const int WM_SYSCOMMAND = 0x0112; public const int SC_MOVE = 0xF010; public const int HTCAPTION = 0x0002; private void Form1_MouseDown(object sender, MouseEventArgs e) { ReleaseCapture(); SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); } 第三种未验证 private bool isMouseDown = false; private Point FormLocation; //form的location private Point mouseOffset; //鼠标的按下位置 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); private const int WM_SYSCOMMAND = 0x0112;//点击窗口左上角那个图标时的系统信息 private const int SC_MOVE = 0xF010;//移动信息 private const int HTCAPTION = 0x0002;//表示鼠标在窗口标题栏时的系统信息 private const int WM_NCHITTEST = 0x84;//鼠标在窗体客户区(除了标题栏和边框以外的部分)时发送的消息 private const int HTCLIENT = 0x1;//表示鼠标在窗口客户区的系统消息 private const int SC_MAXIMIZE = 0xF030;//最大化信息 private const int SC_MINIMIZE = 0xF020;//最小化信息 protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: if (m.WParam == (IntPtr)SC_MAXIMIZE) { m.WParam = (IntPtr)SC_MINIMIZE; } break; case WM_NCHITTEST: //如果鼠标移动或单击 base.WndProc(ref m);//调用基类的窗口过程——WndProc方法处理这个消息 if (m.Result == (IntPtr)HTCLIENT)//如果返回的是HTCLIENT { m.Result = (IntPtr)HTCAPTION;//把它改为HTCAPTION return;//直接返回退出方法 } break; } base.WndProc(ref m);//如果不是鼠标移动或单击消息就调用基类的窗口过程进行处理 } private void Form1_Load(object sender, EventArgs e) { } ------------------------------- 如何在窗体标题栏左边的控制菜单加入自己的菜单啊? 我们一般在窗口标题栏点右键 或 按Alt+空格 可以弹出那个菜单。 ------解决方案-------------------- using System.Runtime.InteropServices; [DllImport( "user32.dll ")] public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport( "user32.dll ")] public static extern bool InsertMenu(IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem); public const int MF_BYCOMMAND = 0; public const int MF_STRING = 0; public const int MF_BYPOSITION = 0x400; public const int MF_SEPARATOR = 0x800; private const uint SC_ABOUT = 0x0001; public const int WM_SYSCOMMAND = 0x0112; private void Form1_Load(object sender, EventArgs e) { IntPtr vMenuHandle = GetSystemMenu(Handle, false); InsertMenu(vMenuHandle, 255, MF_STRING, SC_ABOUT, "About... "); } protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: if ((uint)m.WParam == SC_ABOUT) { MessageBox.Show( "Zswang 路过! "); } break; } base.WndProc(ref m); }

62,052

社区成员

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

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

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

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