【发布时间】:2013-09-09 18:09:35
【问题描述】:
如果我必须利用 jQuery AJAX API 的优点并为我的应用程序进行的每个 ajax 调用设置我自己的自定义设置,如下所示:
假设我有一个页面,它通过对某些 API 进行 ajax 调用来显示表中的员工信息。
define(["jQuery"], function($) {
var infoTable = function (options) {
function init() {
// Provide success callback
options.success_callback = "renderData";
getData();
}
function renderData() {
// This callback function won't be called as it is not
// in global scope and instead $.ajax will try to look
// for function named 'renderData' in global scope.
// How do I pass callbacks defined within requirejs define blocks?
}
function getData() {
$.ajax({
url: options.apiURL,
dataType: options.format,
data: {
format: options.format,
APIKey: options.APIKey,
source: options.source,
sourceData: options.sourceData,
count: options.count,
authMode: options.authMode
},
method: options.method,
jsonpCallback: options.jsonpCallback,
success: options.success_callback,
error: options.error_callback,
timeout: options.timeout
});
}
}
return {
init: init
}
}
我如何实现这一目标?
我知道我们可以将 JSONP 请求用作 require 调用,但这限制了我使用 jsonp、发出 GET 请求和 $.ajax 提供的所有其他功能。
【问题讨论】:
-
这段代码有什么问题?这和 require.js 有什么关系?
-
你为什么使用 JSONP 而不是普通的 JSON?您可以发布示例回复吗?
-
抱歉不清楚,我已经更新了问题。全部原因是在 requirejs 定义块中传递回调。
-
将函数引用传递给
success等回调函数,而不是字符串。 -
您正在返回 init:undefined - 这无助于您的情况。
标签: javascript jquery ajax callback requirejs