我正在创建一个用于提交民意调查的网络应用程序。我开发了一些小部件代码,当存在<div class = "desiredClass">
时,通过ajax
请求从数据库中获取轮询并将其放入html中,用户可以对轮询进行投票。
所以我的widget.js文件作为脚本嵌入到html中:
$(document).ready(function () {
if ($('.loadPoll')[0]) {
var name = $('.loadPoll').data("pollname");
var IP_Address = '-1';
$.ajax({
url: 'http://url.com:3000/loadPoll',
dataType: 'jsonp',
data: {
pollName: name
},
success: function (data) {
poll = data.poll;
$(".loadPoll").html(data.html);
$(document).on('click', '#SubmitVote', function () {
var selectedValue;
var radios = document.getElementsByTagName('input');
for (var i = 0; i < radios.length; i++) {
if (radios[i].type === 'radio' && radios[i].checked) {
selectedValue = radios[i].value;
}
}
console.log(selectedValue);
$.getJSON("http://jsonip.appspot.com?callback=?", function (data) {
var IP_Address = data.ip;
$.ajax({
url: 'http://url.com:3000/submitVote',
dataType: 'jsonp',
data: {
pollName: poll.pollName,
voterID: IP_Address,
vote: selectedValue
},
success: callback("Vote successful")
});
});
});
}
});
})
这基本上向服务器发送请求,返回html,然后,当#SubmitVote
时
点击单选按钮的值作为投票发送到服务器。
我希望能够“允许javascript事件回调”。伪代码示例:
Poll.onSubmit(function() {
console.log('hello world');
});
怎么会这样做?
答案 0 :(得分:1)
要像在那里一样使用点符号,你需要在你的javascript中使用一个名为Poll
的函数。
function Poll()
{
var self = this;
//various things poll's do
self.onSubmit = function(callback)
{
//Submit Code
if (callback && typeof(callback) === "function") {
callback();
}
}
}
然后在某处创建一个新的Poll
对象。
var poll = new Poll();
然后你可以调用onSubmit并传递一个回调。
poll.onSubmit(function() {
console.log('hello world');
});