【发布时间】:2020-01-31 00:36:45
【问题描述】:
我想要一个可以在不同的 getJSON 调用中使用的函数,但我得到一个数据未定义错误
jQuery(document).ready(function($) {
function populateCalendarMonth(data)
{
console.log(data);
}
var d = new Date().toJSON().slice(0, 10);
var args = {
"action": "church_admin",
"method": "calendar-render",
"date": d
};
$.getJSON(ajaxurl,args,populateCalendarMonth(data))
});
没用,但是
$.getJSON(ajaxurl,args,function(data){console.log(data)});
在控制台中精美地显示我的 JSON 数据。
如何创建可以再次使用的函数? (最终日历将在页面加载时填充本月和其他月份点击下一个和上一个!)
【问题讨论】:
-
$.getJSON(ajaxurl,args,populateCalendarMonth(data))没有多大意义。您正在使用...data调用该函数,该函数未定义。您可能只想不调用该函数。 -
所以 function(data){} 可以作为回调,但 myFunction(data) 不能。那我该怎么做呢?
-
与
myFunction。因为您已经定义了myFunction,所以无需指定函数的参数列表或内容。 (在您当前的设置中,您实际上是在执行 ajax 方法之前执行(或调用)myFunction。) -
天哪,这多么简单! $.getJSON(ajaxurl,args,populateCalendarMonth) 完成这项工作。因此,预定义的回调函数不需要参数(我就是这样一个 PHP 人!)不确定这里的过程,因为这是 cmets 而不是答案,为什么我在问题上有 -1?跨度>
-
您有解决方案,但没有原因。如果您编写
var f = func(),它会调用该函数并返回值。如果你写var f = func就是将函数分配给 f。在回调的情况下,您要分配函数,而不是在分配时调用它,因此$.getJSON(url,args, func)表示将func传递给回调,而$.getJSON(url,args, func())表示调用 func 并将其值返回给回调。在内联函数的情况下,它是$.getJSON(url,args, function() {} )vs$.getJSON(url,args, (function() {})() )