2017-09-05 77 views
1

我是Node.js的新手,但我明白它在服务器端。当我在终端中运行我的app.js文件时,它发送文本消息,但我最终要做的是让用户完成表单,并在按下按钮时,向他们发送短信以验证其提交。我正在使用Twilio服务来帮助完成此操作。它目前不在按钮按下时发送消息。使用AJAX调用Node.js文件发送SMS消息

这是我的app.js文件:

var accountSid = process.env.TWILIO_ACCOUNT_SID; 
var authToken = process.env.TWILIO_AUTH_TOKEN; 
var client = require('twilio')(accountSid, authToken); 

app.get('/testtwilio', function(req, res) { 
    client.messages.create({ 
    to: "+1receivingNumber", 
    from: "+myTwilioNumber", 
    body: "Testing, testing, testing" 
    }, function(err, message) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(message.sid); 
    } 
    }); 
}) 

我的JavaScript文件:

$('#buttons').on('click', function(e) { 
    $.ajax({ 
    type: 'POST', 
    url: '/testtwilio', 
    data: { 
     "To": userCellPhone, 
     "From": "+1myTwilioNumber", 
     "Body": "Ahoy! Testing" 
    }, 
    beforeSend: function(xhr) { 
     ... 
    }, 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function(data) { 
     console.log(data); 
    } 
    }); 
}); 

最后,我的html按钮:

<button type="submit" id="buttons" class="buttons">SUBMIT</button> 

老实说,我不即使确定这是可能的,但我一直在寻找永远,并不能真正找到任何直接的解决方案。任何帮助表示赞赏!

+2

'app.get'和'类型:“POST''这应该可以给你,你已经走了错误的提示。如果没有,你可以阅读[文档](http://expressjs.com/tr/api.html#app.post.method) – George

+0

我在想它应该改为键入:'GET'? – mur7ay

+1

其他方法,将'app.get'更改为'app.post'。你想从客户端发出一个POST请求,它现在不能正常工作的原因是你正在从客户端发出一个POST请求,但它已经设置为期望GET。 – George

回答

5

您的app变量未定义。如果你想使用express框架就像你跟着教程,您需要在app.js喜欢将其注册如下:

var express = require('express'); 
var app = express(); 

与答案相结合/约发表评论,那要看你在你的路上。

Nb。您需要在您的节点模块中安装express。从您的根目录下的命令行:

npm install --save express

3

nodeJs路由期望GET。但是你的ajax发出POST请求。请尝试:

app.post('/testtwilio', ... 
+0

我按照你的建议对app.post进行了修改,但由于某种原因,它仍然没有发送。 – mur7ay