2017-04-05 7 views
0

jsonファイルを使用してhtmlテーブルからデータを送信し、それをサーバーノードに渡そうとしていますが、サーバー上でjsonを渡すときに複数回複製されます。サーバーには2回以上実行されますが、1回だけ実行する方法があるかどうかはわかりません。Node JsでAjax POSTメソッドを使用して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'); 
       }); 
     }); 
    }); 
}); 
+0

クライアントでどのようにメソッドenviarDatosを呼び出していますか? あなたはクライアント側のjsを共有できますか? –

答えて

0

私は働く意志このルータについてはよく分からない...私は.json拡張子と1つのルータに見えることはありません。私が間違っている場合は

することは、私に知らせてください:)

しかし... あなたは今、あなたの要求にデータをシリアライズしていないあなたはJSONとしてそれをシリアル化するまで、ちょうどJavaScriptオブジェクトです。 データについてのデータタイプとコンテンツタイプを入れてみてください。

 $.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は、解析するために何かを持っています。

+0

このエラーが発生しました。「SyntaxError:予期しないトークンf」、クライアント側のトークンがわかりません。このエラーは「400(Bad Request)」です。 –

+0

json bdforeがデータを送信するかどうか確認します。すべての大丈夫、JSON.stringify(listJson)を追加してみてください。 –

関連する問題