本文章给大家介绍自己在使用JQuery ui dialog时调用close()函数无效的解决办法,有碰到此类问题的同学可进入参考参考。
问题如下:
一开始我使用floatLayer.show弹出一个层并通过ajax加载一个窗体(下面用“窗体A”代替),在该窗体加载结束时,我将JQuery ui dialog在该窗体里初始化,并配置一些参数。
代码:
代码如下 复制代码
$(function()
{
//初始化参数
$("#getcompany").dialog({ autoOpen: false, width: 760, height: $companyselectboxheight, closeOnEscape: false });
}
此时,我调用打开:
代码如下 复制代码
//打开
$("#getcompany").dialog('open');
或者关闭
//关闭
$("#getcompany").dialog('close');
一切正常。
但是,当我关闭窗体A,再调用上述的打开时是正常的,再关闭就不能关闭了。
最终的解决办法是,使对象$(“#getcompany”)变成全局的变量。
例如:
代码如下 复制代码
$(function()
{
//初始化参数
GETCOMPANY = $("#getcompany");
GETCOMPANY.dialog({ autoOpen: false, width: 760, height: $companyselectboxheight, closeOnEscape: false });
}
//打开
GETCOMPANY .dialog('open');
//关闭
GETCOMPANY .dialog('close');
这样就没问题了。 ^_^
注意: GETCOMPANY 初始化时前不能加 var ,即不能写成 var GETCOMPANY = $(“#getcompany”);
JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点。
JSON的优点:
1、基于纯文本,跨平台传递极其简单;
2、Javascript原生支持,后台语言几乎全部支持;
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
5、容易编写和解析,当然前提是你要知道数据结构;
JSON的缺点当然也有,但在作者看来实在是无关紧要的东西,所以不再单独说明。
客户端
代码如下 复制代码
<?php
/**
* 使用 jsonp 跨域请求数据
*/
?>
<!DOCTYPE html>
<html>
<head>
<title>Test Jsonp</title>
</head>
<body>
<input type="button" id="changeMe" value="点我" />
<div id="changeMeText"></div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#changeMe").click(function() {
//var outUrl = 'http://itbdw.sinaapp.com/sagittarius/learnjs/jsonp_server.php';
//var outUrl = 'http://svn/itbdw/1/sagittarius/learnjs/jsonp_server.php';
var outUrl = 'http://2.itbdw.sinaapp.com/jsonp_server.php';
/**/
$.ajax({
url:outUrl,
dataType:'jsonp',
// 传给服务器的参数
//jsonp: "callback",
// 传给服务器的参数值,可以不写
//jsonpCallback:"callbackValue",
success:function(data) {
$("#changeMeText").html(data);
},
});
/**/
/*
//手动拼接参数 callback 或者其它名称,和服务器对应即可
$.getJSON(outUrl + '?callback=?', function(data) {
$("#changeMeText").html(data);
});
*/
});
});
</script>
<!--
服务器端主要代码
$callback = $_GET['callback'];//自己过滤
if ($callback) {
echo $callback . '("' . $data . '")';// data作为不含双引号或已经转义的字符串
//echo $callback . '(' . $data . ')';// data作为json对象
} else {
echo $data;
}
-->
</body>
</html>服务器端
* @copyright 2011-2013 Zhao Binyan
* @link
* @link
*/
$callback = $_REQUEST['callback'];
$from = parse_url($_SERVER['HTTP_REFERER']);
$from_host = $from['host'];
$data = '成功跨域
MY HOST:' . $_SERVER['SERVER_NAME'] . '
';
$data .= 'YOUR HOST:' . $from_host . '
';
$data .= date('Y-m-d H:i:s');
if ($callback) {
echo $callback . '("' . $data . '")';// data作为不含双引号或已经转义的字符串
//echo $callback . '(' . $data . ')';// data作为json对象
} else {
echo $data;
}
JSON的格式或者叫规则:
JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。
1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号"",以便于不同语言的解析。