【问题标题】:Pass JQuery Variable To Php Via AJAX通过 AJAX 将 JQuery 变量传递给 Php
【发布时间】:2015-04-28 01:17:38
【问题描述】:

我通过 payment.php 中的 href 链接中的 data-pid 将变量传递给 JQuery,并使用 AJAX 将此变量传递给 pmntPopup.php,但是该变量没有被传递

payments.php

<td class="listingTextLeft">
<a href="" data-pid="<?php echo $row[0] ?>" class="pmntDetail"><?php echo $row[20] ?></a>
</td>
<script>
        $( ".pmntDetail" ).click(function( paymentID ) {
            paymentID.preventDefault();
            paymentID.stopPropagation();
            var pmntid = $(this).data("pid");
            console.log("ID: ", pmntid);
            $.ajax({
                type: "POST",
                url: "pmntPopup.php",
                data: {pmntid : pmntid },
                success:function(data) {
                    console.log(pmntid);
                    $("#pmntDetailPopup").modal({position: ["5%"]});
                }
            });
        });
</script>

两个实例中的控制台日志都显示了 pmntid 的正确值,但是当尝试使用 POST 在下面的 pmntPopup.php 中检索它时,我只收到“未进行付款”消息。

pmntPopup.php

<?php
    if(isset($_POST['pmntid'])) {
        $pmntid = $_POST['pmntid'];
    } else {
        echo "Payment Is Not Carried";
    }
?>

我搜索了这个网站,据我所知这应该可以工作,我可能错过了一些非常基本的东西或做了一些非常愚蠢的事情......或两者兼而有之。

控制台 POST 输出:

嗨@Jay,已经从上面的控制台发布了一张POST输出的图片,如果有帮助的话,下图显示了弹出窗口的输出:

根据要求,控制台响应输出如下所示:

【问题讨论】:

  • 您是否在浏览器的控制台窗口中查看过请求/响应?有什么错误吗?
  • 你有 echo `$_POST['pmntid']` 吗?
  • 不,控制台中没有错误,它提供了正确的 pmntid。添加了一张图片来显示这一点。 @Sulthan,是的,已经回显了 $_POST['pmntid'],它出现了空白。
  • 有些东西回响了“21”,pmntPopup.php 中还有什么?
  • 您的更新没有提供更多信息。帖子的响应选项卡中有什么?

标签: php jquery ajax


【解决方案1】:

我不确定你在用 paymentID 变量做什么,但这应该适合你:

$( ".pmntDetail" ).click(function( ) {
    var pmntid = $(this).data("pid");
    console.log("ID: ", pmntid);
    $.ajax({ ...

【讨论】:

  • 那些换行符和其中的所有内容都是因为代码格式不正确@Wignu
  • 啊,还以为可能是格式化。在没有它的情况下再次尝试代码,给出以下错误:PST http://localhost/pmntPopup.php x 好像它现在找不到 pmntPopup.php 文件。
【解决方案2】:

试试这个,ajax 调用的响应将设置为你的成功回调函数的data 变量。

payments.php

<td class="listingTextLeft">
<a href="#" data-pid="<?php echo $row[0] ?>" class="pmntDetail"><?php echo $row[20] ?></a>
</td>
<script>
        $( ".pmntDetail" ).click(function( event ) {
            event.preventDefault();
            var pmntid = $(this).data("pid");
            console.log("ID: ", pmntid);
            $.ajax({
                type: "POST",
                url: "/UCM/pmntPopup.php",
                data: {pmntid : pmntid },
                success:function(data) {
                    console.log(data); // YOU WILL RECEIVE THE RESPONSE IN data variable.
                    $("#pmntDetailPopup").modal({position: ["5%"]});
                }
            });
        });
</script>

pmntPopup.php

<?php
    if(isset($_POST['pmntid'])) {
        echo $_POST['pmntid'];
    } else {
        echo "Payment Is Not Carried";
    }
?>

[另外,我已将文件的完整 url,即“/UCM/pmntPopup.php”放入您的 ajax url 参数]

【讨论】:

  • 谢谢Rao,还是一样的问题,没有pmntid通过。
【解决方案3】:

试试这个。

<td class="listingTextLeft">
<a href="" data-pid="<?php echo $row[0] ?>" class="pmntDetail"><?php echo $row[20] ?></a>
</td>
<script type="text/javascript">
$( ".pmntDetail" ).click(function(e) {
e.preventDefault();
var pmntid = $(this).data("pid");
console.log("ID: ", pmntid);
var request = $.ajax({
url: "pmntPopup.php",
type: "POST",
data: {pmntid : pmntid},
dataType: "html"
});
request.done(function(msg) {
console.log( msg );
});
request.fail(function(jqXHR, textStatus) {
alert( "Connection error: " + textStatus );
});
});
</script>

pmntPopup.php

<?php
    if(isset($_POST['pmntid'])) {
        $pmntid = $_POST['pmntid'];
         echo $pmntid;
    } else {
        echo "Payment Is Not Carried";
    }
?>

作为替代解决方案,请尝试使用 jQuery post

$.post( "pmntPopup.php", {pmntid : pmntid})
.done(function( data ) {
alert( "Data Loaded: " + data );
});

【讨论】:

  • 没有区别对不起,变量仍然没有通过。
  • @PeterDarmis "在数据索引上使用单引号",为什么?
  • @Rao 基于一个工作示例stackoverflow.com/questions/8046482/…
  • 是的,我都试过了,甚至用 pid 周围的单引号试过。不幸的是还是不行。
  • 然后,正如@Rao 在他的回答中发布的那样,您应该检查发布数据的路径。如果 pmntPopup.php 与 payment.php 位于同一文件夹中,我不知道它在您的服务器中的位置。
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多