先来看具体的异常信息:
jquery-1.11.1.min.js:4 Uncaught TypeError: Illegal invocation
at e (jquery-1.11.1.min.js:4)
at Vc (jquery-1.11.1.min.js:4)
at Vc (jquery-1.11.1.min.js:4)
at Vc (jquery-1.11.1.min.js:4)
at Vc (jquery-1.11.1.min.js:4)
at Function.m.param (jquery-1.11.1.min.js:4)
at Function.ajax (jquery-1.11.1.min.js:4)
at severCheck (toActiveDuns:302)
at HTMLInputElement.onblur (VM122 toActiveDuns:99)
再来看源码:
function severCheck(){
if(!checkArea()) return;
var phone=$('#phone').val();
var ssuppliercode=$('#ssuppliercode').val();
var code=$('#code').val(); //识别码
var name=$('#name').val();
var password=$('#password').val();
var randCode=$('#randCode').val(); //页面随机验证码
//第一步:定义json格式数据
var postData = {
"ssuppliercode" : ssuppliercode,
"code" : code,
"name" : name,
"province" : cmbProvince,
"city" : cmbCity,
"area" :cmbArea,
"phone" : phone,
"password" : password,
"randCode" : randCode
};
//检验输入的数据是否符合规范,不符合不予进入下一步操作
$.ajax({
type: "POST",
url: '<%=basePath%>ytj1001Page/toSendYZM',
data: postData, //{"phone":phone,"code":randCode}
dataType:'json', //返回的数据为json,此处要用json接收
cache: false,
success: function(data){}
调试时,控制台报Uncaught TypeError: Illegal invocation,经过排查,原来是ajax请求时,非法调用。
具体是这3个值在上面没有声明:
"province" : cmbProvince,
"city" : cmbCity,
"area" :cmbArea,
找到根源,就明白异常产生的原因了:变量未声明,就直接调用,就会报以上异常。如此一来,解决办法就不言自明了,只需上调用前,声明赋值即可,注意大小写要一致。