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 ...
随机推荐
- Servlet的Cookie值保存与获取
今天测试设置和获取Cookie遇到了一点小问题,很奇怪的问题:把J2ee服务部署在本地 8080端口:访问任何一个服务时,如果客户端没有cookie,则下发cookie, 如果客户端已经有了该cook ...
- java读取网页图片路径并下载到本地
java读取网页图片路径并下载到本地 最近公司需要爬取一些网页上的数据,自己就简单的写了一个demo,其中有一些数据是图片,需要下载下来到本地并且 将图片的路径保存到数据库,示例代码如下: packa ...
- Linux将程序添加到服务的方法(通用)
一:咱们通过这篇文章来演示怎么将某个程序作为服务(就类似Windows服务可以开机自动启动),这里以tomcat为例,已经亲测过: 二:步骤(最好用root用户来做这种事情,切换root用户记得su ...
- android中Actionbar详解
1.什么是Action BarAction Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:1)突出显示一些重要操作(如“最新”.“搜索”等)2) ...
- oracle中row_number() over()分析函数用法
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...
- The Activities of September
- eclipse快捷键(增加一些4连组合快捷键)
http://www.blogjava.net/i369/articles/83309.html ECLISPE的快捷键大全 Eclipse 常用快捷键收集2006年09月29日 星期五 12:0 ...
- 如何关闭D10 启动后自动打开的 WelCome页
在快捷方式上 修改为 "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\bds.exe" -pDelphi -np 最后增加 ...
- 【TypeScript】TypeScript 学习 5——方法
在 JavaScript 中,有两种方式定义方法. 1.命名的方法 function add(x,y){ return x+y; } 2.匿名方法 var myAdd = function(x,y) ...
- Failed to get D-Bus connection: Operation not permitted
通过centos7镜像创建了一个docker容器,并在容器中安装了一个apache服务,但是启动时发生如下报错 [root@1346963c2247 ~]# rpm -qa | grep httpdh ...