我有一个html文件javascript文件和jquery。
在javascript中我有一个命名空间函数,在返回的对象中有一个我想从外面调用的函数。这是为了创建“公共”和“私人”功能。
在HTML中我想触发返回对象中的这个函数。 但它不承认它。在控制台中我收到此错误:
TypeError:BATCH.SendSMS.uploadFiles不是函数
应该有用,我以前做过,所以我一定做错了。你能看一下吗?
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>
JS:
var BATCH = BATCH || {};
BATCH.SendSMS = function() {
var error = "";
var setError = function() {
$('#main').prepend($('<div>').append(error));
};
return {
uploadFiles: function() {
var formData = new FormData($('form')[0]);
//start ajax request
$.ajax({
type: "POST",
url: "php/upload.php",
data: formData,
dataType: "json",
success: function(data) {
console.log(data);
},
error: function(data){
console.log(data);
},
cache: false,
contentType: false,
processData: false
});
}
};
}
答案 0 :(得分:3)
您需要BATCH.SendSMS().uploadFiles()
。
这是因为BATCH.SendSMS
是一个函数,它返回带有uploadFiles
函数的对象,而不是对象本身。
答案 1 :(得分:0)
我找到了更好的解决方案。
我应该把这个功能归还给自己。
示例:
BATCH.SendSMS = function() {
//do stuff here
}();
这最后一个'()'将确保我可以打电话:
BATCH.SendSMS.uploadFiles()