【问题标题】:POST with Ajax not working - Why?POST 与 Ajax 不工作 - 为什么?
【发布时间】:2014-03-18 03:19:21
【问题描述】:

HTML

<div pid="14" class="buybutton">Buy</div>

Javascript

     <script>
       $(document).ready(function() {
           $(".buybutton").click(function(){
               console.log("Clicked Button");
               var pid = $(this).attr("pid");
               console.log(pid,"= Product ID");
               $.post("/redirecttoproduct.php", {"pidofproduct": pid});
            });
       });
      </script>

控制台:

Clicked Button
14 = Product ID 

redirecttoproduct.php

<?php
    session_start();
    $_SESSION['redirectproductpid'] = $_POST['pidofproduct'];
?>

尝试回显 SESSION,没有任何显示

<?php
  $productpid = $_SESSION['redirectproductpid'];
  echo $productpid;
?>

什么都没有出现 - 有什么想法吗?

【问题讨论】:

  • pid 作为属性?我觉得data-pid 在语义上是正确的,然后通过$(this).data('pid') 访问。
  • 好吧,它在 console.log 上工作
  • 是的,但它可能不适用于所有浏览器。我会坚持使用有效的 HTML 来保证这一点。
  • 使用浏览器开发工具的网络标签检查ajax请求是否正确发送
  • /redirecttoproduct.php 是正确的路径吗?

标签: php jquery ajax post whmcs


【解决方案1】:

您是否错过了此页面中的session_start();?使用$_SESSION时需要session_start()

<?php
  session_start();
  $productpid = $_SESSION['redirectproductpid'];
  echo $productpid;
?>

【讨论】:

  • 谢谢 - 这就是缺少的。这部分解决了问题:我的 public_html 文件夹中有一个纯 HTML 网站和一个名为 WHMCS 的计费管理系统。 “购买按钮”在纯 html 中,我需要在 WHMCS 上检查此会话。 WHMCS 在同一台服务器、同一文件夹、相同的所有内容上 - 请问我该怎么做?谢谢!
  • PS:它在纯 html 上回显 SESSION,但在 WHMCS 上不回显
【解决方案2】:

我建议先做一个回调函数来检查发布请求是否成功提交,你的 $_SESSION 变量没有返回任何值的原因之一是因为你的 js 代码根本没有向它发布任何值,结果没有数据被分配给您的 $_SESSION var,即:

$.post("/redirecttoproduct.php", {"pidofproduct": pid})
.done(function() {alert( "success" );})
.fail(function() {alert( "error" );});

如果您可以为您的 $.post 请求提供一个绝对路径,例如您网站的 dir url 即:$.post("//yourwebsite.com/redirecttoproduct.php"),那么可以显着避免此相对路径错误,并确保您不提交无效值不会通过你的 XSS 过滤器(如果有的话),希望这会有所帮助,干杯!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2014-05-17
  • 2021-08-18
  • 2011-07-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多