我试图从表单中将客户和产品详细信息发布到Razorpay。但是,它不会触发与我在接收文件中具有相同变量时相同的结果。代码应该是自我解释的;
表格
<form action="razorpay/index.php" method="POST">
Name: <input type="text" name="cname" required><br>
Phone : <input type="phone" name="cphone" required><br>
Email : <input type="email" name="cemail" required><br>
Address : <textarea cols="50" rows="10" name="caddress" required></textarea>
<input type="hidden" name="gtotal" value="<?php echo $gtotal;?>">
<input type="hidden" name="vcomp" value="<?php echo $vcomp;?>">
<input type="hidden" name="proddescr" value="<?php echo $proddescr;?>">
<input type="submit" name="prodetsub">
接收发布变量的PHP文件
<?php
// If the below variables are not commented, the script works fine with the values
/*$_POST['prodetsub']="submit";
$_POST['gtotal']=8000;
$_POST['vcomp']="Chalo Bazaar";
$_POST['proddescr']="Product Description";
$_POST['cname']="Customer Name";
$_POST['cemail']="customer@email.com";
$_POST['caddress']="Customer Address, Line 1, Line 2, Line 3";
$_POST['cphone']="9999999999";
*/
///But if I try to receive the variables from the post as below, the variables are not passed to javascript and alerted.
if(isset($_POST['prodetsub'])){?>
<form action="charge.php" method="POST">
<?php
$gtotal=trim($_POST['gtotal']);
$vcomp=trim($_POST['vcomp']);
$proddescr=trim($_POST['proddescr']);
$cname=trim($_POST['cname']);
$cemail=trim($_POST['cemail']);
$caddress=trim($_POST['caddress']);
$cphone=trim($_POST['cphone']);
echo $cname."<br>";
echo $cemail."<br>";
echo $cphone."<br>";
echo $caddress."<br>";
echo $gtotal."<br>";
echo $vcomp."<br>";
echo $proddescr."<br>";
?>
<button id="rzp-button1">Pay</button>
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
<script>
var x=<?php echo $gtotal;?>;
var mn="<?php echo $vcomp;?>";
var d="<?php echo $proddescr;?>";
var cn="<?php echo $cname;?>";
alert(cn);
var cem="<?php echo $cemail;?>";
alert(cem);
var cadd="<?php echo $caddress;?>";
alert(cadd);
var cph="<?php echo $cphone;?>";
alert(cph);
var options = {
"key": "rzp_test_WyK93y9mvps7SN",
"amount": x, // 2000 paise = INR 20
"name": mn,
"description": d,
"image": "../images/logo.png",
"handler": function (response){
alert(response.razorpay_payment_id);
},
"prefill": {
"name": cn,
"email": cem,
"contact":cph
},
"notes": {
"address": cadd
},
"theme": {
"color": "#F37254"
}
};
var rzp1 = new Razorpay(options);
document.getElementById('rzp-button1').onclick = function(e){
rzp1.open();
e.preventDefault();
}
</script>
<input type="hidden" name="shopping_order_id" value="21">
</form>
<?php } else{echo "Nothing Submitted<br>";}?>
在两种情况下,变量都能完美回显。但是当它来自表单时,它们不会传递给javascript。因此它不会在javascript中触发警报。但是,当我激活顶部注释掉的变量并在同一文件中指定值时,它可以正常工作
我想这是一个我遗漏的小问题。但是我花了很多时间试图弄清楚并且输了。希望有人能看到我出错的地方。
编辑:
我现在对变量进行了json_enc编码。
源代码显示值正确输出如下
var x="30250";
var mn=""Chalo Bazaar"";
var d=""Unicorn Silver Colour. 4 Year old. In good Condition"";
var cn=""Anit Gopinath"";
alert(cn);
var cem=""anitgopinath@gmail.com"";
alert(cem);
var cadd=""506\/C2, Panchganga,\r\nLok Upvan, Phase I, Pokhran II"";
alert(cadd);
var cph=""9833157945"";
alert(cph);
Chrome javascript控制台出错
&#34; index.php:8 Uncaught SyntaxError:意外的标识符&#34;
我想知道它是否是崩溃javascript的地址中的斜杠
答案 0 :(得分:1)
不要这样做:
//Somewhere in your code...
var array1: [(Int32, Int32)] = []
//...
//And call `thefunc` as:
MyClass.thefunc(&array1, otherstuff: someInt32Value)
您直接将文本从PHP转储到Javascript上下文中,并且可以简单地引入JS语法错误,从而终止整个var cem="<?php echo $cemail;?>";
块。当您执行php-&gt; js输出时,请始终使用<script>
,例如
json_encode()
为什么呢?考虑如果该var包含var cem = <?php echo json_encode($cemail); ?>;
会发生什么。你的代码会产生这个:
"
答案 1 :(得分:1)
您提到alert
窗口无法正常工作,这通常发生在javascript代码中出现错误时。我们必须找出错误是什么。在浏览器中打开javascript控制台(Mozilla Firefox中的F12键)。
哦,错误是双倍引用!因此,为了解决此问题,我们可以删除json_encode
个调用,或者我们可以删除javascript双引号。
有效吗?大。很高兴为您提供帮助。
答案 2 :(得分:0)
您正在检查没有值的POST输入名称。建议检查其他内容,例如隐藏的输入。
// form has <input type="submit" name="prodetsub">
// which apparentl causes this to be false
if(isset($_POST['prodetsub'])){?>
为什么不使用
之类的东西<input type="hidden" name="SUBMIT" value="1" />
// and check for form submit like
if ((isset($_POST['SUBMIT'])) && ($_POST['SUBMIT'] ==1)){