【问题标题】:php if statement doesn't work with jquery variablephp if 语句不适用于 jquery 变量
【发布时间】:2011-06-21 06:59:48
【问题描述】:

我发送到我的 PHP 的 jQuery 变量不起作用(或者至少,它似乎不起作用)。我已经用 ajax 将它发送到我的 php 中。

请看一下,或许能看出问题:

                $('.do').click(function(){
                var cid2 = $(this).attr('id');
                var gebridauthpos = cid2.indexOf('||');
                var gebridauth = cid2.substring(gebridauthpos+2);
                $.post("agenda.php", {gebridauth: gebridauth});
                alert(gebridauth);
                <?php
                    if ($admin == true || isset($_POST['gebridauth']) AND $_SESSION['id'] == $_POST['gebridauth']) {
                        echo "$('#dialog').dialog('open');\n";
                        echo "var cid = $(this).attr('id');\n";
                        echo "var datum = cid.substr(0, 10);\n";
                        echo "var naampos = cid.indexOf('|');\n";
                        echo "var gebridpos = cid.indexOf('||');\n";
                        echo "var naam = cid.substring(naampos+1,gebridpos);\n";
                        echo "var gebrid = cid.substring(gebridpos+2);\n";
                        echo "$.ajax({\n";
                            echo "type: \"POST\",\n";
                            echo "url: \"agenda.php\",\n";
                            echo "data: naam,\n";
                            echo "success: function(){\n";
                                echo "$('#gebruikerinput').html(\"<input type='text' READONLY='' size='35' value='\" + naam +\"'>\");\n";
                                echo "$('#gebridinput').html(\"<input type='hidden' name='gebridtextbox' value='\" + gebrid + \"'>\");\n";
                                echo "$('#datuminput').html(\"<input type='text' READONLY='' size='12' name='datum' value='\" + datum + \"'>\");\n";
                            echo "}\n";
                        echo "})\n";
                        echo "return false;\n";
                    }
                ?>
            });

基本上我想要做的是,当我点击 TD 时,在我的 PHP 的 if 语句中使用“gebridauth”。如果 TD 与登录的人相同,则显示对话框。

【问题讨论】:

  • 响应 JS 的每一行 转义引号?读到这里很痛。
  • Agenda.php 是代码所在的当前 PHP。它基本上会生成一个包含数据的表格。

标签: php jquery ajax variables if-statement


【解决方案1】:

您需要在您的$.post 调用上进行回调,现在您只是发送 POST 并且没有注意服务器发回的内容,因此不会出现任何对话框。我认为您想要更像这样的东西(带有大注释的真实代码):

$.post("agenda.php", {gebridauth: gebridauth}, function(data, textStatus, jqXHR) {
    // If the server sent back a "show the dialog" value in data then
    // show the dialog and all the other stuff that's currently in a
    // bunch of PHP echo calls.
});

【讨论】:

  • 听起来很有趣...但这是否意味着我无法检查 $admin == true 和 $_session['id'] == $_POST['gebridauth'] 吗?跨度>
  • @Yihka:您在服务器上检查这些内容,然后将一些信息作为 POST 响应发送回客户端。然后客户端查看成功回调中的 POST 响应并显示对话框以及它需要执行的任何其他操作。
  • 我明白了...目前,agenda.php 是代码所在的同一个文件,我认为可以这样使用 $_POST,因为它保留在同一个文件中。
  • @Yihka:这只是 PHP 编程模型的一个幸运的副作用,当您查看它时,这两个部分在同一个地方,但它们在不同的地方执行。这东西并不像看起来那么难,你只需要习惯它的工作原理。
【解决方案2】:

我认为您误解了 AJAX 的工作原理。您不能像那样混合使用 Javascript 和 PHP,因为它们在不同系统上运行的时间完全不同。如果您要发布到 agenda.php,您的 PHP 代码需要在文件 agenda.php 中。该文件应该包含Javascript。你也不能像这样以echoJavascript 作为回报。

【讨论】:

  • 到目前为止,代码似乎运行良好,除了 $_POST.议程.php 是所有代码所在的文件。我认为可以返回 POST 并同时使用 AJAX 代码。但如果这不可能,那将比我想象的更难。
  • 嗯,是的,它可以工作,除了不工作的部分。 ;-P 您需要了解按什么顺序执行的内容。 PHP 在服务器上运行,Javascript 在客户端上运行。我有点不知如何解释这种根本差异,因为这本身就可以写满整本书。也许您应该回到基础,重新阅读 AJAX 教程或书籍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2013-12-25
相关资源
最近更新 更多