- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
免责声明 - 我已经审查了现有的 SO 条目,并拼凑了一些应该有效但仍然无效的内容。
我有以下功能。基本上,它是将一对值发送到 Web 服务,结果以 JSON 形式返回:
getPicklist: function () {
var xhrArgs = {
url: 'myUrl',
postData: dojo.toJson({
'opportunityId': 'myOppId',
'loggedInUserId': 'myUserId' //App.context.user.$key
}),
headers: {
"Content-Type": "application/json"
}
}
var deferred = dojo.xhrPost(xhrArgs);
deferred.then(
function (data) {
var jsonResponse = dojo.fromJson(data);
picklistName = jsonResponse.PicklistName;
if (!picklistName) {
picklistName = "defaultPickListName";
}
return picklistName;
},
function (error) {
alert("Could not load picklist " + error);
});
;
//return picklistName; -- null
}
读完这篇文章后我的理解: anonymous js function with xhrpost dojo not returning data
在该函数作用域之外添加一个变量并使用 dojo.deferred 是否可以解决该问题。我尝试在函数外部放置一个 var,并将该对象分配给 picklistName 变量。
但是,我仍然无法获取该函数的结果(picklistName 变量)。
有人可以澄清我做错了什么,以及如何解决它吗?
编辑 - 进行托马斯厄普顿建议的更改后,我更接近了,但我收到了一个奇怪的错误。
我在 getPicklist 之后添加了以下函数:
returnPicklistName: function () {
this.getPicklist().then(function (picklistName) {
return picklistName;
})
},
因为我真正想要的是选项列表(我确实想要 JSON,但我现在只满足于选项列表)。
这会在 Chrome 开发工具中引发以下错误 - Uncaught TypeError: Object [object Object] has no method 'getPicklist'。
我还错过了什么?谢谢。
最佳答案
您需要返回 promise,而不是在 getPicklist
末尾返回 picklistName
-- 此处是 then()
的结果 -- 并添加一个回调,该回调将在延迟解析时接收 picklistName
。
getPicklist: function () {
// ...
var deferred = dojo.xhrPost(xhrArgs);
return deferred.then(
function(data) { /* get picklistName from data */ return picklistName; },
function(error) { /* ... */ }
);
}
然后,当您调用 getPicklist
时:
this.getPicklist()
.then(function(picklistName) {
// Use picklistName here
});
关于javascript - 可变作用域 Dojo xhrPost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729639/
当我使用 dojo.xhrGet 时,我使用这种方式通过 GET 发送多个参数 dojo.xhrGet ({ url:"MyServerPageURL?Param_A="+"ValueA"+"
免责声明 - 我已经审查了现有的 SO 条目,并拼凑了一些应该有效但仍然无效的内容。 我有以下功能。基本上,它是将一对值发送到 Web 服务,结果以 JSON 形式返回: getPicklist: f
我对此很陌生,事实上这是我第一次尝试 Dojo。我正在尝试从以下网站获取数据: //How are we supposed to know what else to include in th
var cType = function(templateId){ dojo.xhrPost({ url : "/mediation1.0.1/template
我正在尝试在 Dijit 树小部件中捕获所选项目以呈现网页的剩余部分。下面是捕获所选项目并将其发送到 Django 后端的代码: alert("Execut
要触发 dojo 的 xhrPost 的错误处理程序,是否有发送服务器响应的特定格式?或者只需在 HttpServletResponse 对象中将状态代码设置为所需的错误代码即可。 谢谢,RR 最佳答
我有一个登录脚本,可以将用户名/密码作为 json 格式发送到服务器。它使用 POST,因此在客户端使用 xhrPost 完成。问题是,当我尝试使用 Firefox 登录时,浏览器不会发出 POST
在 dojo API 文档中,我可以找到 load 和 error 的回调,但我缺少 progress 的回调。 load: function(data) { dojo.byId("respo
我的问题是:我们可以使用 dojo.xhrPost 发布一些 Json 数据吗?更多详情: 我一直在尝试使用 Dojo 代码将 JSON 数据发布到 RESTful 服务。似乎是的行为dojo.xhr
我已使用 REST 创建了一个登录名和 Dojo 。我正在使用 dojo xhrpost 提交我的登录表单数据。提交是通过 onClick 函数执行的。响应是从剩余方法返回的。如何将响应对象存储在 d
我正在尝试将 json 字符串发布到 REST 服务。正在使用以下代码: dojo.xhrPost( { url: REST_URL, postData: jsonData,
我在尝试使用 dojo.xhrPost 将 JSON 字符串发布到 Zend Framework Controller 时遇到问题。 当我将字符串发布到服务器时,我没有收到任何数据发送。我什至尝试过只
我有一个页面,它依赖于一些局部刷新来进行交互。我不打算使用保持 session 事件机制,但我想捕获错误响应我的部分刷新,提醒用户他们的 session 已过期/他们需要刷新,执行一个窗口。 loca
我真的不明白为什么我从带有 Dojo 的 xhrPost 得到不同的响应。对于 IE8,它工作正常并且可以读取 XML - 但在 Firefox 中它的工作方式不同并且没有“serverRespons
我正在尝试对作为 POST 请求中的参数传递的 URL 进行编码。 URL 包含“+”字符,而 javascript 的encodeURIComponent() 似乎没有对这些字符进行编码。知道为什么
我正在使用 DOJO 框架向服务器提交表单详细信息。 xhrPost方法用于将表单提交到服务器。使用JSON消息格式。 当这适用于大多数桌面浏览器和一些移动浏览器时,我收到错误 TypeError:C
我是一名优秀的程序员,十分优秀!