我尝试将png上传到我的node.js服务器,但每次req.files.avatar调用时都会出现错误并说出来TypeError: Cannot read property 'avatar' of undefined.
我试图使用JQuery向我的Node.JS和Express中的Node.JS服务器发出AJAX post请求,但它不起作用!
var express = require('express')
var app = express();
app.listen(8888);
app.configure(function(){
app.use(express.bodyParser());
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.use(express.cookieParser());
app.use(app.router);
});
app.get('/', function (req, res){
res.render('ajax.ejs');
});
app.post('/ajax', express.bodyParser(), function (req, res){
console.log(req);
console.log('req received');
res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)
这是ajax.ejs:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$('#enter').click(function(){
$.ajax({
url: '/ajax',
type: 'POST',
cache: false,
data: { field1: 1, field2: 2 },
success: function(data){
alert('Success!')
}
, error: function(jqXHR, textStatus, err){
alert('text status '+textStatus+', err '+err)
} …Run Code Online (Sandbox Code Playgroud) 我有一个简单的表单,它使用Express将POST数据发送到我的Node.JS服务器.这是形式:
<form method="post" action="/sendmessage">
<div class="ui-widget">
<input type="text" id="search" data-provide="typeahead" placeholder="Search..." />
</div>
<textarea id="message"></textarea>
</form>
Run Code Online (Sandbox Code Playgroud)
ui-widget和输入与typehead来自Twitter的自动完成库相关联.这就是我在服务器中处理POST请求的方式:
app.post('/sendmessage', function (req, res){
console.log(req.body);
usermodel.findOne({ user: req.session.user }, function (err, auser){
if (err) throw err;
usermodel.findOne({ user: req.body.search }, function (err, user){
if (err) throw err;
var message = new messagemodel({
fromuser: auser._id,
touser: user._id,
message: req.body.message,
status: false
});
message.save(function (err){
if (err) throw err;
res.redirect('/messages')
})
});
});
});
Run Code Online (Sandbox Code Playgroud)
控制台显示"{}",然后显示错误req.body.search,因为search未定义.我不知道这里发生了什么,这不是与typehead输入相关的问题.解决这个问题的任何方法......?
谢谢你的进步!
这是我的架构:
var userschema = new mongoose.Schema({
user: String,
follow: [String],
imagen: [{
title: String,
date: { type: Date, default: Date.now }
}]
});
Run Code Online (Sandbox Code Playgroud)
这是代码:
usermodel.findOne({ user: req.session.user }, function (err, user){
usermodel.aggregate({$unwind: '$imagen'},
{$match: { _id: { $in: user.follow } }},
{imagen: true},
{$sort: {'imagen.date': 1}},
function (err, images){
console.log(images);
res.render('home.ejs', {
user: user,
following: images
});
});
});
Run Code Online (Sandbox Code Playgroud)
在follow包含了用户的_id.
代码有效,除非我包含$match.我使用$match过滤结果,只获取我正在关注的用户的图像,但是console.log告诉我aggregate搜索的结果是未定义的,但是当我不写$match查询时,我得到了图像,但我获得了所有图像,而不仅仅是我正在关注的用户的图像.
这有什么解决方案......?
谢谢你的进步!
编辑:
var express = require('express'); …Run Code Online (Sandbox Code Playgroud) 这是HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" href="/favbar.png" />
<!-- JavaScript -->
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<script type="text/javascript">
$(function () {
$("#search").autocomplete({
source: function( request, response ) {
$.ajax({
url: "/search",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
term: request.term
},
success: function( data ) {
response( $.map( data.results, function( item ) {
return {
label: item,
value: item
}
}));
}
});
}
});
});
</script>
<script src="/stylesheets/bootstrap/js/bootstrap.min.js"></script>
<!-- CSS --> …Run Code Online (Sandbox Code Playgroud) function foo() {
var bar = 'no'
setInterval(function() { console.log(bar); }, 1000);
}
Run Code Online (Sandbox Code Playgroud)
当我执行这段代码时,我得到以下输出:no,所以输出是正确的.但是当我执行下一段代码时,当我将函数bar作为参数传递给该匿名函数时,我不知道为什么输出是undefined
function foo() {
var bar = 'no'
setInterval(function(bar) { console.log(bar); }, 1000);
}
Run Code Online (Sandbox Code Playgroud)
如果我将变量作为参数传递,为什么未定义?如果bar在匿名函数中也有一个变量调用,我知道该变量将被内部函数值重写,但我无法理解这种行为