纯HTML运行良好,但在react中实现时会出现问题



下面的HTML代码运行良好,并在提交时将我重定向到操作URL。

<body>
<form action="https://uat.esewa.com.np/epay/main" method="POST">
<input value="100" name="tAmt" type="hidden">
<input value="90" name="amt" type="hidden">
<input value="5" name="txAmt" type="hidden">
<input value="2" name="psc" type="hidden">
<input value="3" name="pdc" type="hidden">
<input value="EPAYTEST" name="scd" type="hidden">
<input value="ee2c3ca1-696b-4cc5-a6be-2c40d929d453" name="pid" type="hidden">
<input value="http://merchant.com.np/page/esewa_payment_success?q=su" type="hidden" name="su">
<input value="http://merchant.com.np/page/esewa_payment_failed?q=fu" type="hidden" name="fu">
<input value="Submit" type="submit">
</form>
</body>

我试着在reactjs中实现它,如下所示-

var params= {
amt: 100,
psc: 0,
pdc: 0,
txAmt: 0,
tAmt: 100,
pid: "ee2c3ca1-696b-4cc5-a6be-2c40d929d453",
scd: "EPAYTEST",
su: "http://merchant.com.np/page/esewa_payment_success",
fu: "http://merchant.com.np/page/esewa_payment_failed"
}
const payNowHandler = async () => {
const config = {

headers: {
'Content-Type': 'application/json',
},
}
const { data} = await axios.post(
`https://cors-anywhere.herokuapp.com/https://uat.esewa.com.np/epay/main`,
{
params,
config,
}
)
console.log('the data is', data)

}

我使用cors-anywhere.herokuapp.com只是为了解决cors问题,我认为这不是什么大问题。我得到了纯HTML内容作为响应,状态代码为200,这也是有意义的。我想将自己重定向到某个特定的路线,并将收到的HTML内容作为响应。我该怎么做???

在axios中尝试发布请求的方式与不同

export const performPost = function (url, data = undefined, queryString = '') {
return axios({
method: "post",
url: url + (queryString ? "?" + queryString : ""),
data,
headers: {...getHeaders()},
});
};

你的标题对象可以像这个一样

const getHeaders = () => ({
Accept: "application/json",
"Content-Type": "application/json",
});

并将您的performPost称为

performPost('url',postbody)
.then(response => {
// do something
}

我不明白你是如何获得表单的提交事件的,通常我们在jsx中使用onSubmit参数,比如

<form onSubmit={payNowHandler}>
...
</form>

但是你的表单似乎不是由react生成的,无论如何,我可以说axios 的使用存在问题

axios等待axios.post(url, data, config),并且您不发送任何数据。您可以使用空对象或null,这在我看来是

所以你的功能应该像这个

const config = {
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
params: {
amt: 100,
psc: 0,
pdc: 0,
txAmt: 0,
tAmt: 100,
pid: "ee2c3ca1-696b-4cc5-a6be-2c40d929d453",
scd: "EPAYTEST",
su: "http://merchant.com.np/page/esewa_payment_success",
fu: "http://merchant.com.np/page/esewa_payment_failed"
}
};
const payNowHandler = async () => {
try{
const {data} = await axios.post(
'https://cors-anywhere.herokuapp.com/https://uat.esewa.com.np/epay/main',
{},
{...config}
);
console.log('the data is', data);
}catch(error){
console.log(error);
}
};

最新更新