试图封装$.getJSON和RequireJS
trying to encapsulate $.getJSON and RequireJS
我有两个javascript文件:
services.js
define(['jquery'], function($){
return {
get: function (url, data) {
return $.getJSON(apiUrl + url, data);
},
};
});
和main.js
define(['jquery', 'Service'], function($, sv){
self.start = function () {
var data = { project: 'myproject' };
return sv.get('server.php', data, function(result) {
alert("here");
});
},
});
当数据被注释为// var data = { project: 'myproject' };
时
alert("here");
起作用,否则就不起作用。
服务器总是回答相同的问题。
我不明白为什么它不起作用。
p.S如果我用这种方式发送,它会起作用(但我不想用那种方式):
return sv.get('server.php?project=myproject', data, function(result) {
有什么想法吗?
您需要将get
函数更改为:
get: function (url, data, success) {
return $.getJSON(apiUrl + url, data, success);
}
从而将回调传递给$.getJSON
。当你评论var data = { project: 'myproject' };
时,你说它有效。我猜,当你推荐它时,你也会把你的呼叫改为.get
,如下所示:
return sv.get('server.php', function(result) {
alert("here");
});
这使得.get
的第二个参数是回调,然后将其作为data
传递给$.getJSON
,根据文档,这是完全有效的。当您这样做时,它会起作用,因为您已经传递了回调,而当您将data
作为第二个参数时,第三个参数会在原始代码中丢失。我上面建议的修改保留了所有3个论点。
只需更新get
函数并添加第三个参数进行回调,如下所示:
define(['jquery'], function($){
return {
get: function (url, data, callback) {
return $.getJSON(apiUrl + url, data, callback);
},
};
});
相关文章:
- 如何将getJson的响应保存在全局变量中
- 以可优化的方式使用requirejs加载模板
- RequireJS向模块传递配置总是返回undefined
- 使用本地文件而不是$.getJSON
- PhoneGap/带有RequireJS's的文本插件
- 如何正确地将参数传递给RequireJS回调函数
- 在requirejs中共享实例化对象
- jQuery.getJSON失败,语法错误
- What does requirejs.config() do?
- 将javascript应用程序迁移到使用AMD的提示(例如requirejs)
- 为什么谷歌地图API's方法未从RequireJS中正确调用
- 创建一个可重用的RequireJs库
- 带有Spring的$.getJSON未执行回调
- jQuery$.getJSON抛出意外令牌
- angularjs、因果报应和requirejs测试用例错误
- 在RequireJS define函数中如何处理参数
- 如何为requirejs和qunit设置grunt任务
- 将broccoliJS与当前使用requireJS的模块化主干应用程序结合使用,我想完全放弃requireJS
- ASP.Net AJAX$GetJson函数获胜'不要被处决
- 试图封装$.getJSON和RequireJS