使用ajax发送时,Jquery序列化表单数据在服务器端显示为字符串

问题描述 投票:0回答:1

我想发送 3 个对象到我的服务器。 2 个付款响应对象和一个对象包含我的表单输入字段值。但是,如果我像下面所示将它一起发送,则 formData 会被视为服务器端的字符串,而我无法访问。如果我只发送 formData 就没有问题。如果我只发送其他 2 个对象,则没有问题。我如何在服务器端将其作为 json 对象获取?

const formData = $('#checkoutForm').serialize();

//razorpay 响应后调用此函数。付款和订单是razorpay的回复

function verifyPayment(payment,order){ 
            $.ajax({
                url: '/verify-payment',
                type: 'POST',
                data:{
                    payment,
                    order,
                    formData
                },
                success: function(response){
                    console.log('payment status',response)
                    
                },
                error: function(error){
                    console.log(error)
                }
            })
        }

服务器中 req.body 的控制台:

form data from verify patment=== {
  payment: {
    razorpay_payment_id: 'pay_NQKts6UWsReLkf',
    razorpay_order_id: 'order_NQKtkMV1mv3AiT',
    razorpay_signature: 'beb2eac3df927dd1901da8f79140be832bb6f662135ed04a3f23ded32ab80e9f'
  },
  order: {
    id: 'order_NQKtkMV1mv3AiT',
    entity: 'order',
    amount: '129900',
    amount_paid: '0',
    amount_due: '129900',
    currency: 'INR',
    receipt: '8774a2511705637831834',
    offer_id: '',
    status: 'created',
    attempts: '0',
    created_at: '1705637832'
  },
  formData:    'fullName=&phoneNUmber=&email=&house=&landMark=&city=&district=&state=&pincode=&selectedAddress=Ahammed+Zulaikh%0D%0AManthadathil(H)%0D%0AChalilpara%0D%0AMALAPPURAM%0D%0A676508%0D%0AMalappuram%0D%0AKERALA%0D%0A919605633278&deliveryInstruction=&totalPrice=1299&paymentMethod=Online+Payment&productId=6 593d05163f67fb7dd7b3182&productPrice=1299&orderProductQty=1'

}

console.log(typeOf req.body.formData) 给出一个字符串。

jquery node.js ajax forms
1个回答
-1
投票

你可以用这个

const formData = JSON.stringify($('#checkoutForm').serializeArray());

函数 verifyPayment(付款,订单){ $.ajax({ url: '/验证付款', 类型:'发布', contentType: 'application/json', // 将内容类型设置为 JSON 数据:JSON.stringify({ 支付, 命令, 表单数据 }), 成功:函数(响应){ console.log('支付状态', 响应); }, 错误:函数(错误){ 控制台.log(错误); } }); }

© www.soinside.com 2019 - 2024. All rights reserved.