如何确保输入整数在表单提交时保持整数

时间:2019-12-19 14:43:02

标签: javascript php html json forms

我正在尝试将支付网关集成到我的网站。我需要做的是发送:

{ 
"api_key": "pkabcd12345", 
"currency": "USD", 
"amount": 0.2,
"method": "MOBILE_MONEY",
"provider_id": "airtel_ug", 
"account_number": "256777111000",
"merchant_reference": "12345", 
"narration": "Payment for Hosting",
"redirect_url": ""
}

使用POST到https://api.dusupay.com/v1/collections

我尝试将其发送为HTML输入表单:

<form method="post" action="https://api.dusupay.com/v1/collections" name="frm1">
<input type="hidden" name="api_key" value="pkabcd12345" required>
<input type="number" name="amount" value='150' required>
<input type="hidden" name="currency" value="USD" required>
<input type="hidden" name="method" value="MOBILE_MONEY" required>
<input type="hidden" name="provider_id" value="airtel_ug" required>
<input type="hidden" name="merchant_reference" value="12346" required>
<input type="hidden" name="narration" value="diamond1" optional>
<input type="hidden" name="redirect_url" value="" optional>
</form>
<button onclick="document.frm1.submit()">Submit</button>

但是应用程序返回错误,提示“参数'amount'应该是浮点数/整数”。

我还尝试过直接通过html表单发布JSON对象,如下所示:

<form method="post" action="https://api.dusupay.com/v1/collections" name="frm1" >
<input value =  '{ 
"api_key": "pkabcd12345", 
"currency": "USD", 
"amount": 0.2,
"method": "MOBILE_MONEY/CARD/BANK", 
"provider_id": "airtel_ug, mtn_ug", 
"account_number": "256777111000",
"merchant_reference": "12345", 
"narration": "Payment for Hosting",
"redirect_url": ""
}' required>
</form>
<button onclick="document.frm1.submit();">Submit</button>

但是它甚至没有通过第一项检查,它抛出错误“缺少参数'api_key'”。

1 个答案:

答案 0 :(得分:0)

  

type属性指定要显示的元素的类型。

即使将输入类型设置为数字,表单仍将其作为字符串提交,如以下代码段所示:

console.log(typeof document.getElementById("yourinput").value)
<input id="yourinput" type="number" name="amount" value='150' required>

这也不是您使用json值执行帖子的方式,相反,您可以编写自己的函数来执行此操作,例如使用fetch:

fetch("https://api.dusupay.com/v1/collections", {
    method: 'post',
    body:    JSON.stringify(body),
    headers: { 'Content-Type': 'application/json' },
})
    .then(res=>res.json()) // if the answer is in json format
    .then(console.log)

但这还不是全部,似乎您很困惑,并且在JSON主体中包含了所有不同类型的提供程序和方法,而不仅仅是针对此特定请求的有效方法。