我正在尝试d3.json()
在函数内部使用给定艺术家ID(例如5K4W6rqBFWDnAN6FQUkS6x)的Spotify API返回数据,但我不知道如何有效地返回数据。该功能看起来像
// Get artist's related artist's information
function relatedArtists(id){
var jsonPromise = new Promise(function(resolve, reject) {
// Async JSON request
d3.json('https://api.spotify.com/v1/artists/' + id + '/related-artists', function(error, data){
if(error) reject(error);
resolve(data.artists);
});
});
jsonPromise.then(function(success) {
console.log(success);
//return(success) //doesn't work
});
jsonPromise.catch(function(error){
console.error(error);
});
}
Run Code Online (Sandbox Code Playgroud)
我试过在函数中创建变量,然后对其进行修改
function relatedArtists(id){
var testVar = 'hello';
var jsonPromise = new Promise(...{
// Async JSON request
d3.json(...)
});
jsonPromise.then(function(success) {
testVar = success;
});
return(testVar);
}
Run Code Online (Sandbox Code Playgroud)
尽管我尽了最大努力,但testVar
仍然如此'hello'
。我已经阅读了一些有关范围和承诺的文章,但是如果有一些我不理解的核心机制,我很乐意做更多的事情。谢谢阅读!
我有一些RxJS代码,这是它的一部分:
.mergeMap(action => {
const user = store.getState().user;
return ajax.post(`${config.API_BASE_URL}/api/v1/rsvps`, {
rsvp: {
meetup_id: action.payload,
user_id: user.id,
}
})
.map(action => calendarActions.rsvpAdded(action.payload));
})
Run Code Online (Sandbox Code Playgroud)
但是,我的服务器告诉我,params的格式不正确:
[info] POST /api/v1/rsvps
[debug] Processing by ParrotApi.RsvpController.create/2
Parameters: %{"rsvp" => "[object Object]"}
Pipelines: [:api_auth]
[info] Sent 400 in 10ms
Run Code Online (Sandbox Code Playgroud)
我尝试使用JSON.stringify,但这不起作用.它只是使我的参数成为一个字符串.
rsvp: JSON.stringify({
meetup_id: action.payload,
user_id: 123,
})
Run Code Online (Sandbox Code Playgroud)
Parameters: %{"rsvp" => "{\"meetup_id\":1,\"user_id\":123}"}
我在做ajax请求并传递此数据
$.ajax({
url: "{{URL::to('match')}}/"+ id,
type: 'PUT',
// dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
data: {
match_id : id,
start_time : newTime,
competitionId: {{$cid}},
_token: '{{ csrf_token() }}'
}
})
Run Code Online (Sandbox Code Playgroud)
在laravel中尝试获取此数据为
dd($request->start_time);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我得到空
在chrome开发人员工具中,正确发送了带有ajax请求的数据,这很简单
match_id:1
start_time:03:00
competitionId:1
_token:9p8plPay7HLvJvMrTgxayEH74Ow6c2D1cli1yU01
Run Code Online (Sandbox Code Playgroud)
在我将此站点移至新服务器之前,所有这些都工作正常
我错过了任何文件吗?
为了强制从服务器下载PDF,我尝试使用axios和本机xhr对象.原因是我必须发送post请求,因为我向服务器传递了太多数据,所以带有简单链接的选项(就像site.ru/download-pdf
对我来说不起作用).
即使我最终设法用Xhr做到这一点,我仍然不知道为什么axios方法不起作用.
以下是我用xhr执行此操作的方法,它对我有用:
let xhr = new XMLHttpRequest()
xhr.open('POST', Vue.config.baseUrl + `order-results/${id}/export-pdf`, true)
xhr.setRequestHeader("Authorization", 'Bearer ' + this.token())
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xhr.responseType = 'arraybuffer'
xhr.onload = function(e) {
if (this.status === 200) {
let blob = new Blob([this.response], { type:"application/pdf" })
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = 'Results.pdf'
link.click()
}
};
xhr.send("data=" + data);
Run Code Online (Sandbox Code Playgroud)
这是"axios-way",我实际上得到了具有正确页数的PDF,但它们都是空的:
axios.post(`order-results/${id}/export-pdf`, {
data,
responseType: 'arraybuffer'
}).then((response) => {
let blob = new Blob([response.data], { type:"application/pdf" })
let link = document.createElement('a')
link.href …
Run Code Online (Sandbox Code Playgroud) 使用JSF和PrimeFaces 6.1我有一个inputText字段:
<p:inputText value="#{backingBean.stringField}">
<p:ajax event="valueChange" update="@form" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
在同一个表单中是一个commandButton:
<p:commandButton id="btnDoThatThing"
ajax="true"
immediate="true"
update="@form"
process="@this"
action="#{backingBean.doThatThing}"/>
Run Code Online (Sandbox Code Playgroud)
当我
一切都按预期完成.但如果我:
因为第一次单击commandButton会触发inputText字段中发生的valueChange事件,因此不会触发该按钮.
如果我第二次点击它,按钮动作终于发生了.
现在,如果我按照预期更改p:ajax event="valueChange"
到p:ajax event="keyup"
commandButton工作的第一次单击,但不幸的是,inputField上的keyup事件非常hacky并且你在该字段中丢失了功能(复制/粘贴文本,文本选择,'快速'输入'等)
有关如何在inputText字段中启动change事件的任何想法,当用户在inputText字段中输入时立即单击按钮时,触发commandButton操作?
谢谢你的时间!
我正在尝试在ajax put
请求后进行重定向.我打算使用纯JS客户端进行验证.
客户:
$(document).ready(function() {
login = () => {
var username = $("[name='username']").val()
var password = $("[name='password']").val()
$.ajax({
type: "put",
url: '/login',
data: {
username: username,
password: password
}
// success: function(response) {
// console.log('Success:')
// console.log(response.user)
// Cookies.set('username', response.user.username)
// Cookies.set('first_name', response.user.first_name)
// Cookies.set('last_name', response.user.last_name)
// Cookies.set('email', response.user.email)
// window.location.href = window.location.origin + '/'
// },
// error: function(error) {
// console.log("Error:")
// console.log(error)
// }
})
}
logout = () => {
console.log("Log out clicked.")
Cookies.remove('username') …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些数据发布到http连接器,但无法弄清楚如何发布数组数据...
我的数据如下所示:
var data = [{
key:'myKey',
keyName:'myKeyName',
value:'value',
valueName:'valueName'
}, {
key:'mySecondKey',
keyName:'mySecondKeyName',
value:'secondValue',
valueName:'secondValueName'
}, ...and so on ];
Run Code Online (Sandbox Code Playgroud)
我尝试通过Ajax将其发布为:
$.ajax({
type: "POST",
url: url,
data: data,
error: function(){
alert("Error");
},
success: function(){
alert("OK");
}
});
Run Code Online (Sandbox Code Playgroud)
请求返回确定,但是当我查看请求数据时 undefined=value&undefined=secondValue
我该如何解决?我需要保存所有这些信息以进行配置
一个简单的帖子,只带有一些键和值,就像key=value&key2=value2
魅力一样。
我有一个从SharePoint列表创建的图形,它在Chrome中工作,但在IE 11中不工作。当我去IE 11中调试时,收到错误消息SCRIPT438: Object doesn't support property or method 'values'
。我对JavaScript相当陌生。
有人可以告诉我什么可能是修复程序,或者我缺少什么
我正在使用chart.js和ajax。
<script type="text/javascript" src="/sites/carm/Shared%20Documents/Chart.min.js"></script>
<script type="text/javascript" src="/sites/carm/Shared%20Documents/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$.ajax({
url: "/sites/carm/_api/web/lists/getbytitle('ATO%20Conditions')/items?$select=ID,Title,m4gs&$top=5000",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function(data) {
if (data.d.results.length > 0) {
var inactiveSet = {};
var activeSet = {};
var otherSet = {};
var totalActive = 0;
var totalInActive = 0;
var totalOther = 0;
var initZero = 0;
$.each(data.d.results, function(index, item) {
if (item.m4gs === "Completed") {
totalInActive++
if (item.Title …
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个需要WordPress网站和简单REST API的项目.我发现WordPress有自己的REST api,并决定扩展其功能以满足我的需求.我需要做的就是为GET和POST请求提供端点,这些端点从/向与WordPress没有直接关系的表(但在同一个数据库中)检索/插入数据.我成功地实现了所有GET请求,但是,我正在努力让POST工作正常.
我有这个路由寄存器定义:
register_rest_route('api/v1', 'create-player/', array(
'methods' => 'POST',
'callback' => 'create_player',
));
Run Code Online (Sandbox Code Playgroud)
客户端通过ajax调用发送请求,该调用有望从上面的路由到达端点.这是ajax:
$.ajax({
method: "POST",
url: '/wp-json/api/v1/create-player/',
data : JSON.stringify(data),
contentType: 'applcation/json',
beforeSend: function (xhr){
xhr.setRequestHeader("X-WP-None", locData.nonce);
console.log('beforeSend');
},
success: function(response){
console.log("success" + response);
},
fail: function (response){
console.log("fail" + response);
}
});
Run Code Online (Sandbox Code Playgroud)
我不确定如何从REST api构建POST路由寄存器,其他GET请求具有args
直接映射到端点中传递的参数的属性.使用POST时,我是否需要类似的东西来处理请求数据?如何获取从ajax传递的数据类型然后在我的函数中使用它create_player();
WP REST API文档似乎不完整,我发现的所有信息都使用内置WordPress功能的端点,如帖子/作者/博客等但我不需要,我只想使用提供的功能并创建自己的界面.谢谢.
我试图用来qwest
向Elasticsearch发送一些数据:
qwest.post(
'http://elk.example.com:9200/incidents',
this.incident,
{cache: true}
)
.then(function (xhr, response) {
console.log('incident posted')
})
.catch(function (e, xhr, response) {
console.log('error posing incident: ' + e)
})
Run Code Online (Sandbox Code Playgroud)
其中this.incident
是Object
(来自Vue.js).
调用失败并出现406 (Not Acceptable)
错误,我理解这是来自Elasticsearch服务器的信息,告诉我我想要一些他不能使用的格式的答案.
呼叫失败(没有索引的文件),所以我不确定我的理解是否正确?
如果是这样 - 要求的正确格式是什么?