2

我的目标是从 WordPress 中定义的自定义字段设置 Google Conversion 值。转换脚本位于登陆页面上,因此我需要将我的自定义字段数据从我的表单中获取到登陆页面。我不能使用 GET 或 POST,因为表单提交是由第三方处理的,并且没有数据返回到实际的登录页面。

所以我尝试使用 PHP 会话,但是这个第三方阻碍了使用 PHP,因为它为自己保留了所有数据。

这是我希望我能开始工作的方法:

  • 表单的验证是使用 jQuery 工具完成的。
  • 然后,我需要在通过 jQuery/AJAX 验证成功后将变量提交到单独的 php 文件。
  • 然后随着登录页面开始加载,我必须从提到的 PHP 文件中获取该变量并将其回显到相关位置。

我想我实际上不需要使用表单在页面上启动会话,因为 jquery 直接从输入中获取数据,而不是任何会话数据。所以这是我的转化价值输入:

<input type="hidden" id="conv" name="conv" value="90">

然后我的表单验证:

    $("#course-form-modal").validator().submit(function(e)  {
           // when data is valid
           if (!e.isDefaultPrevented()) {

                    // this grabs the value from my form
            var con_val = $("#conv").val();
            // and this sends it...
            $.post(
                "../../usersession.php", 
                { data: con_val } 
            );

           }

    });

然后我在 usersession.php 中得到了代码......我发送数据的地方:

// As I'm just trying to echo what was sent to this page, via ajax, I shouldn't need to worry about starting/retrieving a SESSION yet... right?
<?php $var_value = $_POST['data']; ?>
<div id="results">
<?php echo $var_value ?>    
</div>

// 我可以稍后再担心。现在我只想在 USERSESSION.PHP 上回应我的结果 //

最后,我在登录页面上有了从 usersession.php 检索数据的代码:

session_start();
$var_value =  $_SESSION['conv']; 
echo $var_value;

我不完全确定所有这些代码都适合初学者,我更像是一个前端人员......

-编辑-

是的,我很确定代码至少现在是正确的。出于某种原因,它仍然无法正常工作。目前我想知道WordPress是否会阻止我从我的javascript文件中写入usersessions.php(作为参考,该文件路径是在我的工作(不工作)示例中绝对设置的)?我知道当您尝试直接访问文件时,WordPress 有时会抛出 404。另一个潜在问题可能与第三方软件 vanillasoft 有关。我在表单的操作标签中有一个指向他们脚本的链接,这是否可以绕过/杀死表单 > usersession.php > 然后登录页面之间的数据发送/接收?

附带说明一下,如果有人对我如何测试 usersession.php 是否正在接收数据有很好的了解,请告诉我?我最初确实有这段代码,但它什么也不返回,如果我在发送某些东西后直接链接到文件(就像只是将文件 url 粘贴到我的浏览器中),它会返回一个“0”......

if(isset($_POST['conv'])) {
    session_start();
    $_SESSION['conv'] = $_POST[''conv''];
    echo "1";
} else {
    echo "0";
}
4

1 回答 1

1

在输入上设置您的 ID。jQuery 正在寻找 ID,但您只设置了名称。

<input type="hidden" name="conv" value="90">

应该:

<input type="hidden" name="conv" id="conv" value="90">


编辑:

不敢相信我没有早点发现这个。您的问题在以下行的 usersession.php 中。

$_SESSION['conv'] = $_POST[''conv''];

您引用的 POST 错误。它应该是:

$_SESSION['conv'] = $_POST['conv'];


编辑(重新:新的 js 编辑)

在你的java脚本中,你的post vars应该这样格式化:

{ name: "John", time: "2pm" }

所以你的行应该是这样的:

$.post(
        '../../usersession.php', 
        {
            conv: $("#conv").val()
        }, 
        function(data) 
        {
            alert("Data Loaded: " + $("#conv").val());
        }
);
于 2012-06-19T16:09:27.093 回答