通过ajax调用从js方法返回值到REST服务
returning value from js method with ajax call to REST service
我要做的是调用一个js方法,该方法使用ajax来调用REST服务,然后将响应返回到原始调用。听起来很简单,但我还没能在SO上找到足够的答案来让它发挥作用。
如果async为true,则会得到undefined。如果我将async设置为false,它是有效的,但它阻碍了页面的加载。我尝试过几次使用promise和callback的不同例子,但都没能弄清楚。我知道我缺少一些非常基本的东西,或者说我没有掌握一些概念。
在这个例子中,我想检查一件物品是否在拍卖的人员观察名单上。如果是,那么它会将图标类设置为活动,这样它就会更改图标颜色,并且他们可以看到它在他们的观察列表中。如果不是,它将保持灰色。
每一页都会有一些类似本例的内容。
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,这样我就可以进行实际的异步调用,这样就不会阻碍页面的加载。我需要从ajax调用返回的值,该值可用于Page1.php.上的var
提前谢谢。
如果想明白了。
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'
})
},
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从嵌套的API函数返回值
- 通过ajax调用从js方法返回值到REST服务
- $http没有从Spring MVC REST控制器返回值