【发布时间】:2010-01-05 23:06:49
【问题描述】:
当我执行以下 JavaScript 函数时,我收到以下错误:
'2' 为 null 或不是对象。
txtRawCardData 元素的输入是一个包含^ 字符的字符串,我将其拆分为一个字符串数组。
更新
仅当我在 Internet Explorer 7 中运行我的 jQuery 代码时才会收到此错误。当我运行 FireFox 3.5.6 时我没有收到此错误。
更新 2:
此错误还会阻止我为任何 ASP.NET CustomValidator 控件编写的任何 JavaScript 函数触发。
示例输入:
%B1234123412341234^JOHNSON/JOCKO^1234123412345700000000123000000?;1234123412341234=123443211234567?
function ProcessCCInfo() {
var rawData = $('#txtRawCardData').val();
rawData = rawData.replace('\n\r', '');
var CCArray = rawData.split('^');
//format the card holder name
var NameArray = CCArray[1].split('/');
var CCName = NameArray[1] + ' ' + NameArray[0];
var CCNumber = CCArray[0].replace('%B', '');
var CCExpiration = CCArray[2].substring(0,4) //this is the line generating the error!
var FormattedDate = CCExpiration.substring(2,4) + '/' + CCExpiration.substring(0,2);
$('#spanCardHolderName').attr('innerHTML', CCName);
$('#spanCCNumber').attr('innerHTML', CCNumber);
$('#spanCCExpirationDate').attr('innerHTML', FormattedDate);
setTimeout("$('#txtCustomerId').focus()", 1000);
}
有人知道为什么会抛出这个错误吗?
【问题讨论】:
-
我假设您已经验证 CCArray[2] 不为 null 或为空?
-
@Nathan Taylor -
CCArray[2]确实包含一个值,因为它正在填充CCExpiration变量 -
@Michael 你能展示一个输入的例子吗(显然是假卡数据)?您能否在我在答案中输入的函数中尝试该输入,并告诉我您是否仍有问题?
-
@Brian - 我提供了一个示例跟踪数据示例。此外,它会在处理访问
CCArray变量中的数组位置的任何代码行中引发错误 -
@Michael 嗯,奇怪。让我确定我理解你。
var NameArray = ...、var CCNumber = ...和var CCExpiration =行都抛出错误?但是var CCName = ...没有?你运行的是什么浏览器?
标签: asp.net javascript jquery validation