js的showModalDialog对字符串的限制

页面导航:首页 > 网络编程 > JavaScript > js的showModalDialog对字符串的限制

js的showModalDialog对字符串的限制

来源: 作者: 时间:2016-02-04 09:15 【

不知道,大家有没有遇到这样的奇葩问题,当时今天笔者很不幸,遇到这一奇葩的问题,就当使用window showModalDialog( test jsp ,args, dialogHeight=100px;dialogWidth=250px; );进行数据传输,当args的数

不知道,大家有没有遇到这样的奇葩问题,当时今天笔者很不幸,遇到这一奇葩的问题,就当使用window.showModalDialog("test.",args,'dialogHeight=100px;dialogWidth=250px;');进行数据传输,当args的数据大于4096个字符时,多出来的数据会被自动截掉,从而导致数据的完整性丢失.

Syntax
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
Parameters

sURL Required. String that specifies the URL of the document to load and display.
vArguments Optional. Variant that specifies the arguments to use when displaying the document. Use this parameter to pass a value of any type, including an array of values. The dialog box can extract the values passed by the caller from the dialogArguments property of the window object.
MSDN给出了如下标识:
The vArguments parameter can be referenced within the modal dialog box using the dialogArguments property of the window object. If the vArguments parameter is defined as a string, the maximum string length that can be passed to the modal dialog box is 4096 characters; longer strings are truncated.

根据MSDN的说法,我们把args弄成object或array就行了,那么对于参数传出和传入的地方都需要修改"接口"的代码,这样一来未免就一些许麻烦。那么能不能让字符串参数突破args的4096个字符的限制呢?

其实对于一个字符串来说,只要我们把它包装成string object,就可以不再args长度的限制了,而且在Modal Dialog中处理字符串的接口函数不需要做任何的修改,如下代码:

function test(id){
	var _bpc;
	jQuery.ajax({
		url: 'test.',
		data: {'id': id, 'name': name},
		type : "POST",
		async: false,
		cache : false,
		dataType : "json",
		success : function(data) {
			var result = json_parse(unescape(data));
			var selectHTML = [];
			if(result){
				if(result.length == 1){
					_bpc = {'id': result[0][0], 'name': result[0][1]};
				} else if(result.length > 1){
					selectHTML .push('');
					alert(selectHTML.length);
					_obj = window.showModalDialog('index.html?'+'Math.random().toString()',selectHTML, 'dialogHeight=100px;dialogWidth=250px;');
					if(!_obj)  _obj = {'id': -1, 'name': ''};
				}
			}
		},
		error: function(e){
			alert('查询失败,请稍后再试!');
		}
	});
	return _obj;
}
数据接收页面:

<script type="text/javascript" language="javascript">
function finish(){
	var sel = document.getElementById('selDiv').firstChild;
	if(sel){
		var selectedItem = sel.options[sel.selectedIndex];
		window.returnValue = {'id': selectedItem.value, 'name': selectedItem.text};
	}
	window.close();
}
window.onload =function(){
	var args = window.dialogArguments;
	if(args != null){
		var bpcsArgs = args.join('');
		document.getElementById("selDiv").innerHTML = bpcsArgs;
		document.getElementById("selDiv").firstChild.focus();
	}
}
</script>


	
该档案存在于以下流水类型中
请选择一个后点击确定
    




Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<