Javascript 如何在express server中发出ajax get/post请求?
下面是我的express服务器。我试图在ajax中发出get请求,但结果失败了,尽管我在开始时需要jquery。它说除了使用jQueryAjax之外,$没有定义,我还可以使用什么来从RESTfulAPI url进行API调用Javascript 如何在express server中发出ajax get/post请求?,javascript,jquery,ajax,express,Javascript,Jquery,Ajax,Express,下面是我的express服务器。我试图在ajax中发出get请求,但结果失败了,尽管我在开始时需要jquery。它说除了使用jQueryAjax之外,$没有定义,我还可以使用什么来从RESTfulAPI url进行API调用 var express=require('express'); var requestHandler=require('./requestHandler'); var-app=express(); var path=require('path'); 使用(express.
var express=require('express');
var requestHandler=require('./requestHandler');
var-app=express();
var path=require('path');
使用(express.static(path.join(uu dirname,../client'));
get('/homepage',requestHandler.getData);
var port=process.env.port | 3000;
app.listen(端口);
console.log(“运行在以下位置的服务器:”http://localhost:“+港口);
//请求处理程序文件:
var express=需要(“express”);
变量url=”http://jsonplaceholder.typicode.com/";
module.exports.getData=函数(req,res){
$.ajax({
方法:“GET”,
url:url+“帖子”,
成功:功能(数据){
控制台日志(数据);
res.send(数据);
}
});
}
module.exports.getComments=函数(userId){
$.ajax({
方法:“GET”,
url:url+“/注释”,
成功:功能(数据){
控制台日志(数据);
}
});
}
更新
@有人说,express框架在节点中设置web服务器非常流行。可以使用不同的渲染引擎渲染视图并将信息传递给用户。这是来自Express网站的一个非常简单的示例,它侦听两个URL(/posts和/comments)
您需要了解以下内容:
expressjs
是服务器端代码,因此不能像那样使用jquery-ajaxjQuery.ajax()
只能在浏览器中加载页面时在视图中使用您需要使用一些视图引擎,如
jade
来创建模板,并使用路由器在浏览器中推送视图。当您在浏览器中拥有视图时,您可以引用脚本文件,该脚本文件可以包含ajax代码,以便发布文章和评论
var express = require('express');
var app = express();
app.get('/posts', function (req, res) {
res.send('Render posts!');
});
app.get('/comments', function (req, res) {
res.send('Render comments');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
试试这样的方法:
function() {
// Simple POST request example (passing data) :
$http.post("/createProject/"+ id +"", {
projectTitle: pTitle,
userID : id
}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
$scope.getProjects();
console.log("project created");
console.log("this is the response data " + data);
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
};
也请注意。您将从一个外部JavaScript文件调用它。在express服务器上,您将只有“路由”,从外部javascript文件可以对这些路由执行HTTP调用。
var http=require('http');
变量选项={
主持人:“www.google.com”,
路径:'/index.html'
};
var req=http.get(选项、函数(res){
console.log('STATUS:'+res.statusCode);
log('HEADERS:'+JSON.stringify(res.HEADERS));
//将主体完全缓冲,以便作为一个整体进行处理。
var bodyChunks=[];
res.on('data',函数(块){
//您可以在此处处理流式零件。。。
推(块);
}).on('end',function(){
var body=Buffer.concat(bodyChunks);
console.log('BODY:'+BODY);
//…和/或在这里处理整个身体。
})
});
请求开启('错误',功能(e){
console.log('错误:'+e.message);
});
所以,如果我想从真实的url发出请求,我可以在express中使用什么样的语法?在节点中,您通常使用http或请求模块。请参阅“我的更新”。@Evers那么用户必须在浏览器中键入什么url才能按照您的建议从中获得响应。在我看来,路径表明了它必须执行的操作,如果你有/home
,它使用一些视图引擎返回home视图。啊,现在我感到困惑了。看看Express,Express是一个web框架。我会用一个例子来更新我的答案。可能是重复的否。这不是我正在寻找的答案,它解决了我的一个get请求问题;但是,我不知道为什么我不能通过get请求从这个链接获取数据,它适用于http.get()中的/posts,但不适用于注释,如果我在jquery ajax的客户机视图中这样做,它也可以工作…:/你能解释一下吗?可能有几个原因,CORS,不正确的标题。。。你在哪个服务器上发帖?它是您自己的本地主机吗?您需要检查响应,以查看服务器是否响应错误。是。这是我的本地主机,不知道为什么它会给我404响应:/首先检查您的快速路线名称。在路由函数中输入console.log以确保它能够到达路由,然后检查以确保查询工作正常。只需确认它是路由。谢谢:D