JavaScript父子页面之间的相互调用
父页面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<!--<script src="/Scripts/jquery-1.7.1.js"></script>-->
<link href="../Content/style/NavPager.css" rel="stylesheet" />
<link href="../Content/style/tableStyle.css" rel="stylesheet" />
<link href="../Scripts/jquery-easyui-1.3.1/themes/default/easyui.css" rel="stylesheet" />
<link href="../Scripts/jquery-easyui-1.3.1/themes/icon.css" rel="stylesheet" />
<script src="../Scripts/jquery-easyui-1.3.1/jquery-1.8.0.min.js"></script>
<script src="../Scripts/jquery-easyui-1.3.1/jquery.easyui.min.js"></script>
<script src="../Scripts/jquery-easyui-1.3.1/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
$(function () {
initTable();//初始化表格
$("#DetailDiv").css("display", "none");
$("#EditDiv").css("display", "none");
});
//绑定点击详情的 超级链接
function bindDetailLinkClickEvent() {
$("#tbBody a:contains('详情')").click(function () {
var newsId = $(this).attr("newsId");
getNewsToDetail(newsId);//获取新闻详情然后把数据放到div上去。
showDetailDialog();//弹出一个显示详情的Div
return false;
});
}
//弹出一个显示详情的Div
function showDetailDialog() {
//弹出一个Div
$("#DetailDiv").css("display", "block");
//把这个div弹出到 中间,而且是模态
$("#DetailDiv").dialog({
title: "详情对话框",
width: 500,
height: 500,
modal: true,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true,
buttons: [{
text: "添加",
iconCls: "icon-add",
handler: function () {
alert('add');
}
}, {
text: "关闭",
iconCls: "icon-cancel",
handler: function () {
$("#DetailDiv").dialog("close");
}
}]
});
}
//获取新闻详情然后把数据放到div上去。
function getNewsToDetail(newsId) {
//发送一个异步请求,把后台加载的数据放到div上去。
$.getJSON("GetNewsById.ashx", { id: newsId }, function (data) {
$("#spTitle").text(data.title);
$("#spContent").html(data.content);
});
}
//初始化表格
function initTable(postData) {
$.ajax({
url: "LoadAllNews.ashx",
data: postData,//发送后台数据
dataType: "json",//后台返回数据的类型
type: "post",//请求类型
success: function (data) {
$("#tbBody").html("");
for (var i in data.NewsList) {
var strTr = "<tr>";
strTr += "<td>" + data.NewsList[i].title + "</td>";
strTr += "<td>" + data.NewsList[i].ID + "</td>";
strTr += "<td>" + data.NewsList[i].people + "</td>";
strTr += "<td><a newsId='" + data.NewsList[i].ID + "' href='#'>详情</a> ";
strTr += "<a class='deleteLink' newsId='" + data.NewsList[i].ID + "' href='#'>删除</a>";
strTr += "<a class='editLink' newsId='" + data.NewsList[i].ID + "' href='#'>修改</a></td>";
strTr += "</tr>";
$("#tbBody").append(strTr);
}
//把分页的标签添加到页面里面去
$("#NavLink").html(data.NavHtml);
//绑定分页超级链接标签的点击事件
bindNavLinkClickEvent();
bindDetailLinkClickEvent();//绑定点击详情的 超级链接
bindEditLinkClickEvent();//绑定点击修改的 超级链接
bindDeleteLinkClickEvent();//绑定点击修改的 超级链接
}
});
}
//绑定分页超级链接标签的点击事件
function bindNavLinkClickEvent() {
$(".pageLink").click(function() {
//改变当前 页数据。
//改变分页标签。
var href = $(this).attr("href");
var strPostData = href.substr(href.lastIndexOf('?') + 1);
initTable(strPostData);//
return false;
});
}
function bindDeleteLinkClickEvent() {
$(".deleteLink").click(function () {
var link = $(this).parent().parent();
var newsId = $(this).attr("newsId");
$.messager.confirm("提醒", "会删除吗?", function(r) {
if (r) {
//发送异步请求到后台,然后把这条数据剁掉。
$.post("DeleteNews.ashx", { id: newsId }, function(data) {
if (data == "ok") {
link.fadeOut("slow");
} else {
$.messager.alert("提醒","删除失败","warning");
}
});
}
});
return false;
});
}
//绑定 修改 超级链接的事件的响应方法
function bindEditLinkClickEvent() {
$(".editLink").click(function() {
var newsId = $(this).attr("newsId");
//从后台加载数据然后把数据放到修改文本框上去。
//getNews2EditForm(newsId);
//弹出对话框之前,把iframe标签的src属性设置成 修改页面地址。
$("#editFrame").attr("src", "EditNews.aspx?id=" + newsId);
showEditDialog(); //显示修改的对话框
});
}
//从后台加载数据然后把数据放到修改文本框上去。
function getNews2EditForm(newsId) {
$.getJSON("GetNewsById.ashx", {id:newsId}, function(data) {
$("#txtTitle").val(data.title);
$("#txtPeople").val(data.people);
$("#hidId").val(data.ID);
});
}
//显示修改的对话框
function showEditDialog() {
//显示一个修改 的对话框
$("#EditDiv").css("display", "block");
//把这个div弹出到 中间,而且是模态
$("#EditDiv").dialog({
title: "修改对话框",
width: 500,
height: 500,
modal: true,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true,
buttons: [{
text: "修改",
iconCls: "icon-edit",
handler: submitChildEditFrm //submitEditFrm
}, {
text: "关闭",
iconCls: "icon-cancel",
handler: function () {
$("#EditDiv").dialog("close");
}
}]
});
}
//提交子容器的修改表单。
function submitChildEditFrm()
{
//拿到子容器的windows对象
var domFrame = $("#editFrame")[0];
domFrame.contentWindow.submitFrm();
}
//当修改成功之后,由子容器来调用的方法
function afterEditSuccess() {
//关闭对话框,刷新表格
$("#EditDiv").dialog("close");
initTable();
}
//异步提交修改的表单
function submitEditFrm() {
var postData = $("#editFrm").serializeArray();
$.post("ProcessEdit.ashx",postData, function(data) {
if (data == "ok") {
//修改成功:关闭修改对话框,刷新表格
$("#EditDiv").dialog("close");
initTable();//刷新表格
} else {
$.messager.alert("提醒消息", "修改败了", "warning");
}
});
}
</script>
</head>
<body>
<table>
<thead>
<tr>
<th>新闻标题</th><th>新闻编号</th><th>发布人</th><th>操作</th>
</tr>
</thead>
<tbody id="tbBody">
</tbody>
</table>
<!----------------------显示分页控件标签 开始------------------------------>
<div id="NavLink" class="paginator">
</div>
<!----------------------显示分页控件标签 结束------------------------------>
<!----------------------显示修改的对话框 开始------------------------------>
<div id="EditDiv">
<iframe src="javascript:void(0)" id="editFrame" width="100%" height="100%" frameborder="0"></iframe>
</div>
<!----------------------显示修改的对话框 结束------------------------------>
<!----------------------显示详情信息的对话框 开始------------------------------>
<div id="DetailDiv">
<h1>显示详情信息</h1>
<hr/>
<table>
<tr>
<td>新闻标题:</td>
<td><span id="spTitle"></span></td>
</tr>
<tr>
<td>新闻内容:</td>
<td><span id="spContent"></span></td>
</tr>
</table>
</div>
<!----------------------显示详情信息的对话框 结束------------------------------>
</body>
</html>
子页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditNews.aspx.cs" Inherits="WebDemo.Web._2013_12_3.EditNews" ValidateRequest="false" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="/Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function () {
});
function submitFrm() {
//alert("我是子容器");
//让下面的表单整体的异步的提交到后台。
var postData = $("#form1").serializeArray();
$.post("EditNews.aspx", postData, function (data) {
if (data == "ok") {
//修改成功
//关闭父容器的对话框,刷新父容器的表格。
window.parent.window.afterEditSuccess();
}else {
alert("败了啊");
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="hidden" name="hidId" value="<%= News.ID %>"/>
<table>
<tr>
<td>新闻标题:</td>
<td>
<input type="text" name="title" value="<%= News.title %>"/>
</td>
</tr>
<tr>
<td>新闻发布人:</td>
<td>
<input type="text" name="people" value="<%= News.people %>"/>
</td>
</tr>
<tr>
<td>新闻内容:</td>
<td>
<textarea name="content" cols="50" rows="10">
<%= News.content %>
</textarea>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
JavaScript父子页面之间的相互调用的更多相关文章
- Iframe父页面与子页面之间的相互调用
iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者i ...
- js和vue方法的相互调用(iframe父子页面的方法相互调用)。
项目是前后端不分离的,模板引擎使用的JSP. 但是使用了Vue+ElementUI,这里列举一些常用的调用方式,有时候可能. 在js里调用vue方法 我们需要把方法注册到vue对象之外的页面,所以对与 ...
- 父子页面之间元素相互操作(iframe子页面)
js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() ...
- iframe父子页面之间相互调用元素和函数
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content ...
- C#与Javascript变量、函数之间的相互调用
原文地址:http://blog.csdn.net/wonsoft/article/details/2595743 C#与Javascript变量.函数之间的相互调用 一.javascript调用C ...
- Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用
Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用 Ext.ux.IFrame Extjs官方提供的一个组件,可以很方便的使用. 这样就完成了一个简单的IFrame的使用,通过E ...
- JAVA和C/C++之间的相互调用。
在一些Android应用的开发中,需要通过JNI和 Android NDK工具实现JAVA和C/C++之间的相互调用. Java Native Interface (JNI)标准是java平台的一部分 ...
- C 程序与 C++ 程序之间的相互调用
因为 C 编译器编译函数时不带参数的类型信息,只包含函数的符号名字.如 void foo( int x ) , C 编译器会将此函数编译成类似 _foo 的符号,C 链接器只要找到了调用函数的符号,就 ...
- react-native页面之间的相互传值
react-native页面之间的相互传值 之前在自己学习react-native的时候,在页面跳转和传值问题上花了一段时间去网上搜索和查找资料,自己总结了两个方法.可以参考 https://blog ...
随机推荐
- 2018.10.14 bzoj1915: 奶牛的跳格子游戏(单调队列优化dp)
传送门 NOIP练习题. f[i]f[i]f[i]表示去的时候选了iii且回来的时候第一步走的是i−1i-1i−1的最优值. 显然f[i]=maxf[i]=maxf[i]=max{f[j]−sum[j ...
- 1024 Hello World
哈哈,原来今天是程序员的节日啊,快乐咯,可是今天好冷好冷~~
- vivado用法
声明为”DEBUG”,即使没有连接到其他模块,也不会被优化掉.但并不是所有的信号都是在声明为“debug”属性之后就不会优化掉. (2)同一个bank中能设置一个电平. (3)
- ROS教程
Learning ROS 学习ROS Depending on your learning style and preferences, you can take two approaches to ...
- java梳理-序列化与反序列化
一背景: 之前笔记关于rpc框架介绍中,提到为了调用远程服务,需要再确定消息结构后考虑序列化与反序列化,序列化主要是把对象转换成二进制码便于网络传输,反序列化就是相反的,主要目的是生成对象便于后续处理 ...
- Codeforces805D. Minimum number of steps 2017-05-05 08:46 240人阅读 评论(0) 收藏
D. Minimum number of steps time limit per test 1 second memory limit per test 256 megabytes input st ...
- ZOJ2478 Encoding 2017-04-18 23:02 43人阅读 评论(0) 收藏
Encoding Time Limit: 2 Seconds Memory Limit: 65536 KB Given a string containing only 'A' - 'Z', ...
- express 阮一峰的博客
http://javascript.ruanyifeng.com/nodejs/express.html next没怎么用过... 一个不进行任何操作.只传递request对象的中间件 functio ...
- 树和二叉树在java中
树代表一种非线性的数据结构,如果一组数组节点之间存在复杂的一对多关联时,程序就可以考虑使用树来保存这组数据了. 线性表.栈和队列都是线性的数据结构,这种数据结构之内的元素只存在一个对一个的关系.存储, ...
- 磁盘配额(Quota)的应用与实践
1>什么是Quota 在Linux中,由于是多用户,多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占用掉了硬盘空间的话,那肯定影响其他用户的使 ...