繁体   English   中英

从带有ajax调用的REST服务的js方法返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM