使用带有Node Js的Ajax POST方法发送json数据?

时间:2017-04-05 19:58:51

标签: jquery node.js ajax

我正在尝试从带有json文件的html表中发送数据并将其传递给服务器节点,但是在服务器上,当我传递json它可以读取它时,它会被多次复制,因为它传递了所有的数据到服务器,但它运行了两次以上,我不知道是否会有一个方法只运行一次。

客户端:

function enviarDatos(listJson){
    $.ajax({
    type: "POST",
    url: "http://localhost:8080/enviando_datos.json",
    data: listJson,
    success: function(data) {
        //show content
        alert('Success!');
    },
    error: function(jqXHR, textStatus, err) {
        //show error message
        //alert('text status '+textStatus+', err '+err);
    }
  });
}

服务器端:

app.post('/enviando_datos.json', function(req, res){
    //sacar eprocentaje de consumo
    //sacar valor de fondo fijo
    var fecha_actual = new Date();
  var dd_actual = fecha_actual.getDate();
  var mm_actual = fecha_actual.getMonth()+1; //hoy es 0!
  var yyyy_actual = fecha_actual.getFullYear();
  fecha_actual = yyyy_actual+"-"+ mm_actual+'-'+dd_actual;
    var estado = 0;
    if(req.body.tipo == 'VALE DE PAGO'){
        var valor_base = req.body.valor;
    }else{
        var valor_base = req.body.valor - (req.body.valor*0.14);
    }
    db_handler.obtener_fondo_categoria(req.body.categoria,function(queryResMontoMax){
        db_handler.insertar_proveedores_ruc_cedula(req.body.proveedor,req.body.ruccedula,function(queryRes1){
            db_handler.insertar_datos_caja_chica_con_factura(
                req.carPoolSession.username,
                fecha_actual,
                req.body.valortotal,
                queryResMontoMax[0].MONTO_MAX,
                '15%',
                req.body.empresa,
                req.body.categoria,
                req.body.proveedor,
                req.body.ruccedula,
                req.body.entregado,
                req.body.cargado,
                req.body.fecha,
                req.body.valor,
                req.body.tipo,
                req.body.estabfact,
                req.body.ptoemifact,
                req.body.numsecfact,
                req.body.numautofact,
                '14%',
                valor_base,
                req.body.estabret,
                req.body.numemiret,
                req.body.numsecret,
                req.body.numautoret,
                estado,
                function(queryRes2){
                    console.log('datos ingresados con exito');
                });
        });
    });
});

1 个答案:

答案 0 :(得分:1)

我不确定这台路由器是否可行...我似乎永远不会是一台扩展名为.json的路由器。

如果我错了,请告诉我:)

但是... 您还没有序列化请求中的数据,现在只是一个JavaScript对象,直到您将其序列化为JSON。 尝试输入有关数据的dataType和内容类型。

       $.ajax({
        type: "POST",
        url: "http://localhost:8080/enviando_datos.json",
        dataType: "json",
        contentType: 'application/json', //see that
        data: listJson
       }).done(function ( data ) {
          alert("ajax callback response: "+JSON.stringify(data));
      });

调用JSON.stringify以序列化为JSON,然后body parser需要解析。