标签: ajax

d3-无法从json请求返回数据?

我正在尝试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'。我已经阅读了一些有关范围和承诺的文章,但是如果有一些我不理解的核心机制,我很乐意做更多的事情。谢谢阅读!

ajax json d3.js

4
推荐指数
1
解决办法
1796
查看次数

RxJS v5:如何用params发出POST请求?

我有一些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}"}

javascript ajax rxjs rxjs5 redux-observable

4
推荐指数
1
解决办法
6510
查看次数

如何从Laravel中的Ajax请求获取数据

我在做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)

在我将此站点移至新服务器之前,所有这些都工作正常

我错过了任何文件吗?

ajax jquery laravel laravel-5.4

4
推荐指数
1
解决办法
2万
查看次数

从请求响应创建PDF不适用于axios,但适用于本机xhr

为了强制从服务器下载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)

javascript pdf ajax xmlhttprequest axios

4
推荐指数
3
解决办法
7371
查看次数

PrimeFaces inputText ajax event = valueChange触发AFTER commandButton点击

使用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)

当我

  1. 对inputText字段进行更改,
  2. 然后单击命令按钮以外的其他位置
  3. 单击命令按钮

一切都按预期完成.但如果我:

  1. 对inputText字段进行更改,
  2. 立即执行命令按钮

因为第一次单击commandButton会触发inputText字段中发生的valueChange事件,因此不会触发该按钮.

如果我第二次点击它,按钮动作终于发生了.

现在,如果我按照预期更改p:ajax event="valueChange"p:ajax event="keyup"commandButton工作的第一次单击,但不幸的是,inputField上的keyup事件非常hacky并且你在该字段中丢失了功能(复制/粘贴文本,文本选择,'快速'输入'等)

有关如何在inputText字段中启动change事件的任何想法,当用户在inputText字段中输入时立即单击按钮时,触发commandButton操作?

谢谢你的时间!

ajax jsf primefaces jsf-2

4
推荐指数
1
解决办法
2190
查看次数

来自AJAX调用的res.redirect

我正在尝试在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)

javascript ajax jquery express

4
推荐指数
2
解决办法
3606
查看次数

用JavaScript发布数组数据

我正在尝试将一些数据发布到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魅力一样。

javascript arrays ajax post http

4
推荐指数
1
解决办法
2万
查看次数

SCRIPT438:对象不支持属性或方法的“值”

我有一个从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)

ajax jquery json sharepoint-2013 chart.js

4
推荐指数
1
解决办法
4233
查看次数

方法POST的Wordpress REST API自定义端点

我目前正在开发一个需要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功能的端点,如帖子/作者/博客等但我不需要,我只想使用提供的功能并创建自己的界面.谢谢.

php ajax rest wordpress

4
推荐指数
2
解决办法
7667
查看次数

elasticsearch的406(不可接受)错误代码是什么意思?

我试图用来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.incidentObject(来自Vue.js).

调用失败并出现406 (Not Acceptable)错误,我理解这是来自Elasticsearch服务器的信息,告诉我我想要一些他不能使用的格式的答案.

呼叫失败(没有索引的文件),所以我不确定我的理解是否正确?

如果是这样 - 要求的正确格式是什么?

javascript ajax elasticsearch

4
推荐指数
1
解决办法
9551
查看次数