javascript名称空间类型错误:blah不是函数
我有一个html文件,一个javascript文件和jquery 在javascript中,我有一个带名称空间的函数,返回一个对象,其中包含一个我希望从外部调用的函数。这是为了创建“公共”和“私有”功能 在HTML中,我想触发返回对象中的这个函数。 但它不承认这一点。在控制台中,我收到以下错误: TypeError:BATCH.SendSMS.uploadFiles不是一个函数 这应该行得通,我以前做过,所以我一定做错了什么。你能看一下吗 HTML:javascript名称空间类型错误:blah不是函数,javascript,namespaces,Javascript,Namespaces,我有一个html文件,一个javascript文件和jquery 在javascript中,我有一个带名称空间的函数,返回一个对象,其中包含一个我希望从外部调用的函数。这是为了创建“公共”和“私有”功能 在HTML中,我想触发返回对象中的这个函数。 但它不承认这一点。在控制台中,我收到以下错误: TypeError:BATCH.SendSMS.uploadFiles不是一个函数 这应该行得通,我以前做过,所以我一定做错了什么。你能看一下吗 HTML: <!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<title>Batch SMS</title>
<style media="all" type="text/css">
@import url("main.css");
</style>
<script type="text/javascript" src="./js/batchsms.js"></script>
</head>
<body>
<form enctype="multipart/form-data" id="upload-form">
<div id="fields">
<div>
<span>Sender: </span>
<select id="sender">
<option value="">Maak keuze</option>
<option value="Sender1">Sender 1</option>
<option value="Sender2">Sender 2</option>
<option value="Sender3">Sender 3</option>
</select>
</div>
<div>
<span>Phone file:</span>
<input id="phone" name="phone" type="file">
</div>
<div>
<span>Appointment file:</span>
<input id="appointment" name="appointment" type="file">
</div>
<div>
<span></span>
<input type="button" value="Upload Files" onclick="BATCH.SendSMS.uploadFiles();">
</div>
</div>
</form>
</body>
</html>
批量短信
@导入url(“main.css”);
发件人:
马克基泽
发送者1
发送者2
发送者3
电话文件:
预约档案:
JS:
var BATCH=BATCH | |{};
BATCH.SendSMS=函数(){
var误差=”;
var setError=函数(){
$('#main').prepend($('').append(error));
};
返回{
上载文件:函数(){
var formData=新的formData($('form')[0]);
//启动ajax请求
$.ajax({
类型:“POST”,
url:“php/upload.php”,
数据:formData,
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(数据){
控制台日志(数据);
},
cache:false,
contentType:false,
processData:false
});
}
};
}
您需要批处理.SendSMS().uploadFiles()
这是因为
BATCH.SendSMS
是一个使用uploadFiles
函数返回对象的函数,而不是对象本身。我找到了一个更好的解决方案
我应该把函数本身返回
例如:
BATCH.SendSMS = function() {
//do stuff here
}();
最后这个“()”将确保我可以调用:
BATCH.SendSMS.uploadFiles()是的,可以正常工作。。。虽然我在没有()的情况下也这么做了。。。但那是在javascript中,调用另一个脚本。也许这就是原因。在您上面提供的代码中,如果可能的话,在不调用函数的情况下访问返回对象的属性将非常棘手。
BATCH.SendSMS = function() {
//do stuff here
}();