complateDeviceBtn = $('#...');
complateDeviceBtn.bind('click',function(e){
callback=function(result){
success=function(result){MsgBox.success('部署完成');}
error=function(result){MsgBox.error(result.message)}
//console.log(error);
(result.success?success:error)(result);
}
complateDeviceAjaxAction.setProperty('deviceMainId','${row.MAINID}');
complateDeviceAjaxAction.send('deploy',callback);
});
当执行到(result.success?success:error)(result);就提示undefined了,但如果在这一句前面加上console.log(error);就可以执行通过,为什么?
------解决方案--------------------
估计是那个 ; 的问题,
error=function(result){MsgBox.error(result.message)}加上;试试
------解决方案--------------------
独立测试,就是;的问题
var showner=function(result){
success=function(result){console.log('部署完成');}
error=function(result){console.error(result.message)};//这里的;你原来是没有的,FF下出错.
//console.log(error);
(result.success?success:error)(result);
}
showner({"success":"true",message:"message"});
------解决方案--------------------
当一行的第一个字符是+-=,.(){}[]时它会试图与上一行合并成一条语句来解释。
所以你的代码被解释成
error=function(result){MsgBox.error(result.message)}(result.success?success:error)
------解决方案--------------------
error=function(result){MsgBox.error(result.message)};
加个分号试下
------解决方案--------------------
同上,加分号。。
JS里面出了名的立即执行的匿名函数的写法就是
function(w){
}(window)
所以呢就是直接执行了你的error函数