【问题标题】:Creating a function to use in getJSON callback创建要在 getJSON 回调中使用的函数
【发布时间】: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() {})() )

标签: jquery function getjson


【解决方案1】:

您不需要在调用中添加参数,因为它是由回调本身传递的。

$.getJSON(ajaxurl, args, populateCalendarMonth)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多