[错误:MultipartParser.end():流意外结束:state = START]

时间:2012-08-28 22:36:52

标签: html5 node.js express pug multipartform-data

我在尝试发送表单时收到此错误

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);
    });

});

仅从此文件中更改一个名为informacion的div home.jade

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,
        });
    });
};

1 个答案:

答案 0 :(得分:0)

您的点击处理程序应return false以防止浏览器尝试处理点击。这可能会让你感到困扰。如果这没有帮助,console.log() objAttr的值,并确保确实存在与其值对应的玉文件。