[英]returning value from js method with ajax call to REST service
我想做的是调用一个js方法,该方法使用ajax调用REST服务,然后将该响应返回到原始调用。 听起来很简单,但是我无法在SO上找到足够的答案来使其正常工作。
如果async为true,则无法定义。 如果将async设置为false,它可以工作,但会阻止页面的加载。 我已经尝试了使用promise和回调的不同示例,但是还没有弄清楚。 我知道我缺少一些非常基本的东西,或者是我未能掌握的概念。
在此示例中,我要检查某项是否在拍卖的人员监视列表中。 如果是,则它将图标类设置为活动状态,以便更改图标颜色,他们可以看到它在其监视列表中。 如果不是,它将保持为灰色。
每个页面都会有一些类似此示例的内容。
Page1.php
jQuery(document).ready(function($){
var w = mgapp.checkWatchlist($id, localStorage.u_pcjid);
if(!w.error){
$("#watchlist").removeClass('watchlist').addClass('watchlist-active');
}
});
该方法在script.js页面上。 从ajax调用返回的数据是JSON对象。
注意:async当前设置为false只是为了使其工作。
script.js
var mgapp = {
checkWatchlist: function($iid, $uid) {
var $msg;
$.ajax({
url: 'https://somedomain/api/v1/watchlist/item/' + $iid + '/' + $uid,
type: "GET",
headers: {"Authorization": localStorage.u_apikey},
contentType: 'application/json',
async: false
})
.done(function(data){
$msg = data;
})
.fail(function(data){
$msg = data;
});
return $msg;
}
}
我确定我将需要有回调函数之类的东西,但是我所做的任何尝试都没有成功。
只是为了澄清。 所有代码都按原样工作,而不是异步工作。 我想要的是将async设置为true,以便进行实际的异步调用,这样就不会阻止页面的加载了。 我需要从Page1.php上的var可用的ajax调用返回的值。
提前致谢。
如果想通了。
var w = mgapp.checkWatchlist($id, localStorage.u_pcjid).done(function() {
if(!w.responseJSON.error){
$("#watchlist").removeClass('watchlist').addClass('watchlist-active');
}
})
checkWatchlist: function($iid, $uid) {
return $.ajax({
url: 'https://somedomain.c9.io/api/v1/watchlist/item/' + $iid + '/' + $uid,
type: "GET",
headers: {"Authorization": localStorage.u_apikey},
contentType: 'application/json'
})
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.