【问题标题】:how to retrieve data from a node.js file with jquery ajax如何使用 jquery ajax 从 node.js 文件中检索数据
【发布时间】:2017-05-05 22:38:37
【问题描述】:

我是 nodejs 的新手,并试图弄清楚如何通过前端的 ajax 从工作节点脚本中获取 twilio 数据。

我在后台有这个

'use strict';

const express = require('express');
const twilio = require('twilio');

const accountSid = '####';
const authToken = "####";
const client = require('twilio')(accountSid, authToken);

const baseURL = 'https://api.twilio.com'
const recordingExtension = '.mp3' //mp3 or wav

let app = express();

app.post('/list', (request, response) => {
  const recordings =[]
  client.recordings.list(function(err, data) {
      data.recordings.forEach(function(recording) {
          var recordingURIComponent = recording.uri.replace('.json','')
          var recordingURL = baseURL + recordingURIComponent + recordingExtension
          recordings.push(recordingURL)
      });
      const recordingData = {
        recordings: recordings
      }
      response.send(recordingData)
  });
});


app.listen(3000, '127.0.0.1',function(){
  console.log('listening');
});

现在我想从前端的 ajax 访问该响应。

我知道它可能看起来像:

$.post( '/list', function(data) {
  console.log(data)
});

但我不确定将我的 post/get/ajax 指向哪里。如果两个文件都在同一台服务器上,我应该使用哪个 URL 作为发布请求?我需要指定端口(3000?)。还是我需要做一些事情来提供将执行 ajax 请求的 html 文件?

感谢任何帮助。谢谢!

【问题讨论】:

  • 路由未配置为接受任何参数。但是您的 jQuery 帖子正在传递参数?为什么会这样?
  • 我的错 - 不需要参数。修改后的代码。
  • 不熟悉 twilio api 但client.recordings.list() 在做什么?您在控制台中看到的$.post() 的响应是什么?
  • 只是为 $.post 找到 404 - client.recording.list 只是列出了我的 twilio 帐户中可用的所有录音。如果我仅使用服务器上自己文件中的 node.js 命令执行它,它就可以自行工作,但不知道如何从这个 `app.post('/list') 命令调用它
  • 先解决404问题。使用 cURL 或 other means 向该端点发出请求。还要检查 Web 控制台和 node.js 控制台(如果启用了日志记录),以确定哪些请求到达了 express 服务器。

标签: jquery node.js ajax express twilio


【解决方案1】:

我通过让 node.js 也提供我的静态 html 来解决这个问题:

app.use(express.static('public_html'))

我改成了get请求:

$.ajax({
   method: "GET",
   url: "/list"
})
 .done(function( data ) {
    console.log(data)
    playlist = data
    len = playlist.recordings.length
    $audio[0].addEventListener('ended',onAudioEnded);
    playAudio()
});

app.get('/list', (request, response) => {

使用此文件夹结构:

/
  app.js

  public_html/

    index.html

并确保从以下位置访问我的网站:

http://[mysite].com:3000

【讨论】:

    【解决方案2】:

    尝试像这样发布请求

    $.ajax({
          url: "/list",
          data:{'auth':'465dsfsd5f44654'},
          type: "POST",
          headers: {
              'Content-Type': 'application/json'
          },
          success: function (data) {
    
          }
      });
    

    【讨论】:

      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多