我有两个名为card_process.php和payment.php的php文件。我试图将数据从cart_process页面传递到付款页面。代码如下:
cart_process.php:
$paynow = "<button type='submit' id='reset' class='btn btn-danger' align='center' disabled>PAY NOW</button> ";
$cart_box_total = '<div class="cart-products-total" id="cart-products-total" name="subtotalsub">.$total.</div>';
?>
<script>
$(document).ready(function() {
$("#reset").click(function() {
var content = $('#cart-products-total').html();
$.post("payment.php", { html: content})
.done(function(data) {
window.location = "payment.php";
});
});
});
</script>
在payment.php上:
<?php echo $_POST['html']; ?>
当页面重定向到payment.php
时,$_POST['html']
不会回复任何内容,但如果我在cart_process.php中使用alert(content)
,则会提醒我所需的数据。< / p>
如何将整个数据发布到页面?
答案 0 :(得分:1)
将window.location = "payment.php";
替换为:
$('body').append( data );
看看它是如何运作的。最终,您可能想要指定目标目标元素:
<div id="ajax-target"></div>
然后代替$('body').append( data )
:
$('#ajax-target').html( data );
<强>更新强>
如果必须重定向,那么您不需要ajax。以下是如何做到这一点:
$(document).ready(function() {
$("#reset").click(function() {
var content = $('#cart-products-total').html();
$('<form action="payments.php" method="POST"/>')
.html( '<textarea name="html">' + content + '</textarea>' )
[0].submit();
});
});
答案 1 :(得分:0)
您对此处发生的操作顺序存在一些误解。您实际上是在两次调用payment.php
。在此处作为带有html
参数的POST请求:
$.post("payment.php", { html: content})
,然后再次作为GET请求,不带任何参数:
window.location = "http://selina.co.il/payment.php";
客户端代码基本上忽略了POST请求的结果,只是将用户发送到GET请求,这自然不会echo
任何事情。
你在尝试在这里做什么并不完全清楚,但是如果你正在使用AJAX,那么你可能真的不想将用户重定向到任何东西。所以不要这样做:
window.location = "http://selina.co.il/payment.php";
在AJAX回调中执行某些操作以修改当前页面。也许将data
变量设置为页面上的某些内容?像这样的东西?:
$('#someDiv').html(data);
这真的取决于应该在这里发生的事情,我们无法从发布的代码中确定。
如果应用程序的流程 ,用户应该重定向到另一个页面,那么您有两个选择:
1:预期PHP代码中的GET参数而不是POST参数,并将其包含在重定向中:
window.location = "http://selina.co.il/payment.php?html=" + encodeURIComponent(content);
如果content
是它所暗示的那样,可能会非常难看。
2:根本不要使用AJAX,只需要form
个帖子payment.php
。