【发布时间】:2012-08-28 22:36:52
【问题描述】:
当我尝试发送表单时收到此错误
link(rel='stylesheet',href='/stylesheets/home/profile/home_menu.css')
script(type='text/javascript',src='/javascripts/perfil_editar.js')
#logo_usuario
img(src='')
#nombre_usuario(class='titulo1')
input(type='text',placeholder='',id="perfil_inputdatos_usuario")
input(type="text",placeholder="",id="perfil_inputdatos_tipo")
#datos_fondo
#perfil_publicaciones_fondo
select(id='perfil_publicaciones_lista',size='2')
option(value='si', selected='selected') Publicacion 1
option(value='no') Publicacion 2
#perfil_publicaciones_ir
t Ir
#perfil_busquedas_fondo
select(id='perfil_busquedas_lista',size='2')
option(value='si', selected='selected') Busqueda 1
option(value='no') Busqueda 2
#perfil_busquedas_ir
t Ir
#ubicacion_fondo
#datos_usuario
#perfil_datos_nombre
img(src='/images/logo_nombre2.png')
#perfil_datos_telefonos
img(src='/images/logo_telefono2.png')
#perfil_datos_direccion
img(src='/images/logo_direccion2.png')
#perfil_datos_mail
img(src='/images/logo_web2.png')
form(action='/nuevaEdicion',method='post',enctype='multipart/form-data',id='editar')
input(type='name',name='perfil_inputdatos_nombre',id='perfil_inputdatos_nombre')
input(type='name',name='perfil_inputdatos_direccion',id='perfil_inputdatos_direccion')
input(type='name',name='perfil_inputdatos_telprivado', id='perfil_inputdatos_telprivado')
input(type='name',name='perfil_inputdatos_telcontacto',id='perfil_inputdatos_telcontacto')
input(type='name',name='perfil_inputdatos_telcelular',id='perfil_inputdatos_telcelular')
input(type='name',name='perfil_inputdatos_mail',id='perfil_inputdatos_mail')
#datos_titulo(class='titulo2')
t Datos
#perfil_publicaciones_titulo(class='titulo2')
t Publicaciones Realizadas
#perfil_busquedas_titulo(class='titulo2')
t Busquedas Guardadas
#ubicacion_titulo(class='titulo2')
t Ubicacion
#perfil_editar
t Editar Perfil
我用这个脚本在 ajax 中渲染它
$(document).ready(function(){
$('.perfil_nav a').click(function(){
var objAttr=$(this).attr("id");
$('#informacion').animate({height:'hide'},600,
function()
{
$.ajax({
url: "/profile_arquitecture_/"+objAttr,
}).done(
function(msg) {$('#informacion').html(msg);});
});
$('#informacion').fadeIn(600);
});
});
从这个文件中只改变一个名为 informationacion 的 div 家.玉
extends layout
append head
link(rel='stylesheet',href='/stylesheets/home/home.css')
script(type="text/javascript",src="https://maps.google.com/maps/api/js?sensor=false&language=es")
script(type='text/javascript',src='/javascripts/home_menu.js')
block contenido_central
#contenido
#capa_principal
#barra_sesion
#barra_menu
ul(class='perfil_nav')
li(class='first')
a(href='#',id='miperfil') Perfil
li
a(href='#',id='mispublicaciones') Mis Publicaciones
li
a(href='#',id='misbusquedas') Mis Busquedas
li(class='last')
a(href='#',id='mismensajes') Mensajes
#informacion
在信息 div 中附加 form.jade 在 routes.perfil.js 它使用 res.render 渲染
exports.editarPerfil=function(req,res)
{
console.log(req.body)
res.render('home/nosotros',
{title: 'Bienvenido ',
sessionUser: req.session.passport.user
});
}
在 app.js 中
app.post('/nuevaEdicion',express.bodyParser(),routes.perfil.editarPerfil);
这是控制台中的错误
[Error: MultipartParser.end(): stream ended unexpectedly: state = START]
{}
编辑 2:
我发现当我输入表格时
enctype="application/x-www-form-urlencoded"
页面冻结,但是当我放
enctype="multipart/form-data"
我必须点击多次提交,但表单工作正常,控制台中的结果是
{ perfil_inputdatos_nombre: '',
perfil_inputdatos_direccion: '',
perfil_inputdatos_telprivado: '',
perfil_inputdatos_telcontacto: '',
perfil_inputdatos_telcelular: '',
perfil_inputdatos_mail: '' }
当我放的时候
enctype="text/plain"
表单可以快速正常工作,没有问题,但控制台中的结果是
{}
所以我认为问题出在 html 中,但任何人都可以解决这个问题???坦克
这是配置文件 ID 处理程序
exports.profile_pages=function(req,res)
{
var usuario_actual=req.session.passport.user;
mongo.dbusuarios.infoUsuario(usuario_actual,function(err,items)
{
if(err) throw err;
res.render('home/profile/home_'+req.params.id,
{
title:'',
layout:false,
datos_perfil:items,
});
});
};
【问题讨论】:
-
在浏览器中查看为表单生成的 HTML(返回
application/x-www-form-urlencoded后)。有什么惊喜吗? -
那如果你用wget或者curl之类的方式去获取,或者你
console.log()浏览器中ajax请求的结果会是什么样子呢? -
在浏览器中;只需确保您的 JavaScript 控制台已打开(Firebug、Dragonfly 等),然后在结果中包含使 AJAX 请求调用
console.log的代码。 -
在您呈现表单的位置周围显示代码。
-
处理“/profile_arquitecture_/id”请求的代码是什么(即您的 AJAX 调用请求的内容)?
标签: html node.js express pug multipartform-data