我有两个javascript文件:
service.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");
有效,否则不起作用。
服务器总是回答相同的问题。
我不明白为什么它不起作用。
如果我以这种方式发送它可行(但我不希望这样):
return sv.get('server.php?project=myproject', data, function(result) {
任何想法?
答案 0 :(得分:1)
您需要将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
成为回调,然后根据documentation将其作为data
传递给$.getJSON
,这完全有效。当你这样做时,它会起作用,因为你已经传递了回调,而当你有data
作为第二个参数时,第三个参数会在原始代码中丢失。我上面建议的修改保留了所有3个参数。
答案 1 :(得分:1)
只需更新get
函数并为回调添加第三个参数,如下所示:
define(['jquery'], function($){
return {
get: function (url, data, callback) {
return $.getJSON(apiUrl + url, data, callback);
},
};
});