【问题标题】:[Error: MultipartParser.end(): stream ended unexpectedly: state = START][Error: MultipartParser.end(): stream ended unexpectedly: state = START]
【发布时间】: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


【解决方案1】:

您的点击处理程序应该return false 以阻止浏览器尝试处理点击。这可能是什么让你搞砸了。如果这没有帮助,console.log()objAttr 的值并确保确实存在与其值对应的玉文件。

【讨论】:

  • 是的,这是我为你解决的众多问题之一,再见
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 2013-11-02
  • 2015-11-04
  • 2020-09-22
  • 2020-12-23
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多