【问题标题】:Sending URL with parameters and using javascript values in parameters发送带参数的 URL 并在参数中使用 javascript 值
【发布时间】:2019-09-11 20:35:04
【问题描述】:

对于在线支付,我必须将参数发送到 URL。我的网站中的计算是用 Javascript 编写的,在线支付公司需要 PHP 参数,如 MD5 哈希。

我尝试创建隐藏表单并将所需的 javascript 值放入输入字段。并且成功了。

我的隐藏表格:

<form action="https://test.millikart.az:7444/gateway/payment/register" method="get" id="hiddenForm">
<input name="mid" value="unicopy" type="hidden">
<input name="amount" id="amount" value="" type="hidden">
<input name="currency" value="944" type="hidden">
<input name="description" value="" id="description" type="hidden">
<input name="reference" value="UNICSH3195319" type="hidden">
<input name="language" value="az" type="hidden">    
<input name="signature" value="<?php echo htmlspecialchars($signature); ?>" type="hidden">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onClick="clearList()" >Reset</button>
<button  class="btn btn-primary" id="odenis" >Pay</button>
</form>

<script>
document.getElementById("amount").value= parseInt(yekunMeblegArray.reduce(myFunc));
document.getElementById("description").value= description;

//AJAX
$.ajax({
type: 'POST',
url: "index.php",
data: $("#hiddenForm").serialize(), 

success: function(response) { 
alert("succeed")},
});
</script>

但在发送 URL 之前,我必须使用 PHP 准备 $signature,其中应包含来自 javascript 的值

我的 PHP:

<?php 

  $mid="unicopy";
  $amount=$_POST['amount'];
  $currency="944";
  $description=$_POST['desc'];
  $reference="UNICSH3195319";
  $language="az";
  $key="123456qwerty";

  $signature=strtoupper(md5(strlen($mid).$mid.strlen($amount).$amount.strlen($currency).$currency.(!empty($description)? strlen($description).$description :"0").strlen($reference).$reference.strlen($language).$language.$key));

  ?>

如您所见,$signature 包含 $amount 和 $description 变量,它们应该从 javascript 中获取其值。我尝试使用 AJAX 发送表单数据,但未能成功。我怎样才能做到这一点?任何形式的帮助表示赞赏。

【问题讨论】:

  • ajax 在哪里?
  • @mplungjan 编辑了我的问题并添加了 AJAX
  • 我也尝试使用 AJAX 仅发送两个值(数量和描述),但仍然无法成功
  • 你没有对 ajax 响应做任何事情,你没有错误函数来查看它是否失败
  • 您是否检查了电话的回复?如果您收到没有错误的响应,请尝试 var_dump($_POST) 以查看值是否已传递到服务器端。

标签: javascript php ajax


【解决方案1】:

我的猜测是:

1) document.getElementById("amount").value= parseInt(yekunMeblegArray.reduce(myFunc)); 没有设置正确的值(您可以在设置的值下方使用console.log 语句进行调试。

或者

2) $("#hiddenForm").serialize() 此函数调用不会以您认为的方式生成数据。你应该console.log去调查。

我建议您查看ajax 对象的contentTypedataType 属性:

https://inweb.notesalong.com/id/5d78e9b04818060013b15b19/https://api.jquery.com/jquery.ajax/#notesalong:5d78e97645e451000020ae70;

【讨论】:

  • 第一点有效,因为我在发送时在 URL 中看到了正确的金额值,我将 $("#hiddenForm").serialize 更改为 "amount=" + amount 以查看问题是否在此行,仍然得到 array(0) 时var_dump($_POST)
猜你喜欢
  • 2019-08-11
  • 2012-11-01
  • 1970-01-01
  • 2020-01-31
  • 2020-05-26
  • 2020-05-13
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
相关资源
最近更新 更多