我尝试使用AJAX来调用Node.js文件,以便在按下按钮时发送短信。因此,当我在终端中键入节点app.js时,消息会发送到我的手机,但是,当我在我的javascript文件中使用jQuery click事件时,它不再在浏览器中发送。我认为主要问题是在我的index.js文件中,而不是Node.js文件,更具体地说,是实际的URL路径。
这是我的app.js文件,其中包含发送短信的信息(app.js):
var accountSid = process.env.TWILIO_ACCOUNT_SID;
var authToken = process.env.TWILIO_AUTH_TOKEN;
var client = require('twilio')(accountSid, authToken);
var express = require('express');
var app = express();
client.messages.create({
to: "+1...",
from: "+1...",
body: "Testing, testing, testing"
}).then((messsage) => console.log(message.sid));
我的文件包含Javascript(index.js):
$("#buttons").click(function() {
alert("Clicked.");
$.ajax({
url: "/app.js",
type: "POST",
beforeSend: function() {
alert("testing");
},
success: function(result) {
// $("#result").html(result);
alert(" sss ");
}
}).error(function() {
alert("wrong");
});
});
所以我的主要问题是,URL是否是您尝试运行的文件的位置/名称?到目前为止,这是我的理解,但信息并未被发送。
答案 0 :(得分:4)
这不起作用。您的ajax请求将寻找具有http和运行环境的服务来执行您未提供的代码。
虽然你已经安装了Express,但这并不难。
这是一个简单的节点/快速设置:
var accountSid = process.env.TWILIO_ACCOUNT_SID;
var authToken = process.env.TWILIO_AUTH_TOKEN;
var client = require('twilio')(accountSid, authToken);
const express = require('express')
const app = express()
app.post('/api', function (req, res) {
client.messages.create({
to: "+1...",
from: "+1...",
body: "Testing, testing, testing"
}).then((messsage) => {
console.log(message.sid)
res.send('done!', message.sid )
});
})
app.listen(8000, function () {
console.log('Example app listening on port 8000!')
})
现在您应该可以使用以下内容访问它:
$.ajax({
url: "http://localhost:8000/api",
// etc.
})
答案 1 :(得分:3)
我相信你误解了运行ajax调用时会发生什么。可以把它想象成浏览器中的URL。如果你去像localhost:8080 / app.js(假设你有一台服务器正在运行),你会得到你为app.js发布的文本,代码无法运行服务器。
相反,您需要服务器侦听像localhost:8080 / runappjs这样的URL。当收到此url时,app.js会运行代码,然后将某些内容返回给浏览器。这可以是JSON,HTML或任何您想要的,并可以指示状态
以下是使用express routing
app.post('/runappjs', function (req, res) {
***PUT APPJS CODE HERE FOR SIMPLICITY YOU CAN REFACTOR LATER***
var accountSid = process.env.TWILIO_ACCOUNT_SID;
var authToken = process.env.TWILIO_AUTH_TOKEN;
var client = require('twilio')(accountSid, authToken);
var express = require('express');
var app = express();
client.messages.create({
to: "+1...",
from: "+1...",
body: "Testing, testing, testing"
}).then((messsage) => console.log(message.sid));
res.send('Got a POST request')
})