簡體   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