我的表格如下:
<form data-controller="Posts" data-method="admin_add">
然后我想在提交表单时根据这些传递的数据属性调用一个函数。
$(document).on('submit', 'form', function(e){
e.preventDefault(); // there is no server so nothing to submit to
var formData = $(this).serialize();
var controller = $(this).attr('data-controller');
var method = $(this).attr('data-method');
// I use .attr instead of .data because .data is funny sometimes
var fnString = controller + '.' + method;
var fn = window[fnString];
if (typeof fn === "function") fn(formData);
});
这是基于我在这里阅读的内容:http://www.sitepoint.com/call-javascript-function-string-without-using-eval/
它应该叫:
Posts.admin_add(formData);
但是它没有调用函数...如果我删除if语句然后我得到一个错误,它不是一个函数......有什么想法吗?
答案 0 :(得分:7)
请记住,您使用方括号来避免使用eval
:
var fn = window[controller][method];
fn(formData);