为什么数组作为参数传递进去取不了值出来?
为什么数组作为参数传递进去取不了值出来? (arrData)
好像原来都OK的, 换个OS就不行了?
还有这种诡异的事?
各位兄弟帮忙看一下, 谢了.
或者说该怎样取值?
问题点数:100 回复次数:42
-------------------------------
showbo
/
发表于:2009-05-18 10:29:101楼 得分:0
和系统没关系吧。。
你的bXmlHttpSupport是不是限定了只有支持XMLHttpRequest的浏览器???
如果是你使用ie6浏览器是创建不了XMLHttpRequest的,只能使用activx
wjfmail
f16
发表于:2009-05-18 12:40:333楼 得分:0
向一楼的仁兄学习,没留意过这个问题.
y_cc
允许的空间, 时间内
发表于:2009-05-18 14:06:204楼 得分:0
不关ajax的事. 再说明一遍函数吧.
showbo
/
发表于:2009-05-18 15:10:025楼 得分:0
知道你错哪里了
oRequest.open('POST', sUrl); //这里没指定第3个参数时,就是默认为异步提交
这样
GetInfo(arrData);
alert(arrData);//----------------->有可能ajax还没返回,所以这里输出为空
但是
你在状态函数中alert,而且状态为4了,这样当然有数据了
改为同步的,指定为 oRequest.open('POST', sUrl,false);
y_cc
允许的空间, 时间内
发表于:2009-05-18 15:52:437楼 得分:0
我用先后步骤测试过了, 是先得到数据, 才到这步的, 所以设置同步还是一样的
GetInfo(arrData);
alert(arrData);//----------------->有可能ajax还没返回,所以这里输出为空
showbo
/
发表于:2009-05-18 16:16:068楼 得分:100
在仔细一看,找出了一个很严重的错误,js非obj对象变量是不能引用赋值的,就是变量的作用域的问题,当然同步的问题也可能存在
你运行下面的例子就知道了,你的错误是变量作用域,和可能存在的同步问题
showbo
/ 发表于:2009-05-18 16:18:249楼 得分:0
代码加说明时出错了,下面这个才是正确的。。
fx_blog
发表于:2009-05-18 16:19:1010楼 得分:0
调用错了,兄弟.
你应该在给数组辅值后,再到判断有没有值.
y_cc
允许的空间, 时间内
发表于:2009-05-18 19:54:1412楼 得分:0
那么该怎么像C语言一样给全局参数赋值?
就是引用赋值.
或者有什么其他的办法?
showbo
/
发表于:2009-05-19 08:49:1413楼 得分:0
全局变量
js非obj变量没有引用的,就是传址
原创文章,转载请注明出处:为什么数组作为参数传递进去取不了值出来?
好像原来都OK的, 换个OS就不行了?
还有这种诡异的事?
各位兄弟帮忙看一下, 谢了.
或者说该怎样取值?
+展开
-JavaScript
function Test(){
var arrData = [];
GetInfo(arrData);
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
var arrData = [];
GetInfo(arrData);
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
问题点数:100 回复次数:42
-------------------------------
showbo
/
发表于:2009-05-18 10:29:101楼 得分:0
和系统没关系吧。。
你的bXmlHttpSupport是不是限定了只有支持XMLHttpRequest的浏览器???
如果是你使用ie6浏览器是创建不了XMLHttpRequest的,只能使用activx
wjfmail
f16
发表于:2009-05-18 12:40:333楼 得分:0
向一楼的仁兄学习,没留意过这个问题.
y_cc
允许的空间, 时间内
发表于:2009-05-18 14:06:204楼 得分:0
不关ajax的事. 再说明一遍函数吧.
+展开
-JavaScript
function Test(){
var arrData = [];
GetInfo(arrData);
alert(arrData);//----------------->空值
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
alert(arrData);//----------------->有数据
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
var arrData = [];
GetInfo(arrData);
alert(arrData);//----------------->空值
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
alert(arrData);//----------------->有数据
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
showbo
/
发表于:2009-05-18 15:10:025楼 得分:0
知道你错哪里了
oRequest.open('POST', sUrl); //这里没指定第3个参数时,就是默认为异步提交
这样
GetInfo(arrData);
alert(arrData);//----------------->有可能ajax还没返回,所以这里输出为空
但是
+展开
-JavaScript
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
alert(arrData);//----------------->有数据
arrData = obj.Data1;
alert(arrData);//----------------->有数据
你在状态函数中alert,而且状态为4了,这样当然有数据了
改为同步的,指定为 oRequest.open('POST', sUrl,false);
y_cc
允许的空间, 时间内
发表于:2009-05-18 15:52:437楼 得分:0
我用先后步骤测试过了, 是先得到数据, 才到这步的, 所以设置同步还是一样的
GetInfo(arrData);
alert(arrData);//----------------->有可能ajax还没返回,所以这里输出为空
showbo
/
发表于:2009-05-18 16:16:068楼 得分:100
在仔细一看,找出了一个很严重的错误,js非obj对象变量是不能引用赋值的,就是变量的作用域的问题,当然同步的问题也可能存在
+展开
-JavaScript
function Test(){
var arrData = [];
GetInfo(arrData);
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;//其实你这里设置的是GetInfo的参数arrData,并未设置 Test里面的arrData变量,GetInfo的参数arrData只是存储Test里面的arrData的值的另外一个变量,不知道这样说你清楚没有
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
var arrData = [];
GetInfo(arrData);
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;//其实你这里设置的是GetInfo的参数arrData,并未设置 Test里面的arrData变量,GetInfo的参数arrData只是存储Test里面的arrData的值的另外一个变量,不知道这样说你清楚没有
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
你运行下面的例子就知道了,你的错误是变量作用域,和可能存在的同步问题
+展开
-HTML
<script>
var d;v//全局变量d
alert(d)//输出undefined
function setD(d){
d={name:'showbo'};
alert(d)//输出[object Object],此时是参数d,而非全局变量d,并且参数d只是全局变量d的一个拷贝,并非是全局变量d的引用
setD('xx');
alert(d)//输出undefined
</script>
var d;v//全局变量d
alert(d)//输出undefined
function setD(d){
d={name:'showbo'};
alert(d)//输出[object Object],此时是参数d,而非全局变量d,并且参数d只是全局变量d的一个拷贝,并非是全局变量d的引用
setD('xx');
alert(d)//输出undefined
</script>
showbo
/ 发表于:2009-05-18 16:18:249楼 得分:0
代码加说明时出错了,下面这个才是正确的。。
+展开
-HTML
<script>
var d;
alert(d)
function setD(d){
d={name:'showbo'};
alert(d)
}
setD('xx');
alert(d)
</script>
var d;
alert(d)
function setD(d){
d={name:'showbo'};
alert(d)
}
setD('xx');
alert(d)
</script>
fx_blog
发表于:2009-05-18 16:19:1010楼 得分:0
调用错了,兄弟.
你应该在给数组辅值后,再到判断有没有值.
+展开
-HTML
<html>
<head>
<script>
function arrHasVal(arr)
{
return arr.length>0?true:false;
//在这里操作数据.
//而不应在ajax里方法操作数据
}
</script>
</head>
</html>
function Test(){
var arrData = [];
GetInfo(arrData);
alert(arrData);//----------------->空值
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
alert(arrData);//----------------->有数据
arrHasVal(arrData);
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
<head>
<script>
function arrHasVal(arr)
{
return arr.length>0?true:false;
//在这里操作数据.
//而不应在ajax里方法操作数据
}
</script>
</head>
</html>
function Test(){
var arrData = [];
GetInfo(arrData);
alert(arrData);//----------------->空值
}
function GetInfo(arrData) {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
alert(arrData);//----------------->有数据
arrHasVal(arrData);
}
}
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
y_cc
允许的空间, 时间内
发表于:2009-05-18 19:54:1412楼 得分:0
那么该怎么像C语言一样给全局参数赋值?
就是引用赋值.
或者有什么其他的办法?
showbo
/
发表于:2009-05-19 08:49:1413楼 得分:0
全局变量
js非obj变量没有引用的,就是传址
+展开
-JavaScript
var arrData//全局变量
function Test(){
GetInfo();
}
function GetInfo() {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
}
}
oRequest.open('POST', sUrl,false); //注意要同步提交,要不在ajax状态为4前都不能使用arrData,如果为同步提交可以不需要处理函数了,直接后面
oRequest.send(null);
//arrData=eval('(' + oRequest.responseText + ')'); //同步可以不需要处理状态
}
}
function Test(){
GetInfo();
}
function GetInfo() {
if(bXmlHttpSupport) {
var sUrl = 'info.php';
var oRequest = new XMLHttpRequest();
oRequest.onreadystatechange = function() {
if(oRequest.readyState == 4) {
var obj = eval('(' + oRequest.responseText + ')');
arrData = obj.Data1;
}
}
oRequest.open('POST', sUrl,false); //注意要同步提交,要不在ajax状态为4前都不能使用arrData,如果为同步提交可以不需要处理函数了,直接后面
oRequest.send(null);
//arrData=eval('(' + oRequest.responseText + ')'); //同步可以不需要处理状态
}
}
加支付宝好友偷能量挖...
原创文章,转载请注明出处:为什么数组作为参数传递进去取不了值出来?