【问题标题】:jQuery is messing with my PHPjQuery 弄乱了我的 PHP
【发布时间】:2013-01-29 04:10:16
【问题描述】:

我正在处理一个注册表单,结果发现它很痛苦。

我对 PHP 很陌生,所以请放慢我的步伐 - 哈哈。

我安装了一个 jQuery 插件,它允许我为我的文本框制作内联标签。我还为注册过程中发生的任何错误(无效的电子邮件等)创建了一个错误框。这是我的一些 HTML/PHP 代码。

    <?php
    if($_POST['submit'])
    {
$signuperror = "Hello World";
     ?>

            <?php if($signuperror != "") { ?>
            <span id="signuperror"><?= $signuperror; ?></span>
            <?php } ?>

问题是当我单击表单上的提交按钮时,没有显示“Hello World”的“错误”。我将此代码复制并粘贴到 test.php 文档中,它运行良好。所以我知道它必须来自我的其他 html 代码。在对几乎每一行代码进行故障排除后,我找到了罪魁祸首。事实证明,内联标签的 jQuery 插件初始化是问题所在。

    $(function(){
            $.fn.formLabels();
            $("form").submit(function(){
                var formVal = $("form").serialize();
                parent.$("#default div.results").html(formVal);
                return false
            })
        });

当我删除它时,它工作得很好(当然没有我的内联标签)。

我可以做些什么来让 PHP 和 jQuery 都工作。

谢谢。 - 瑞恩

【问题讨论】:

  • jQuery is messing with my PHP。不可能
  • parent.$("#default div.results").html(formVal); 中的 parent 是什么?你给parent赋值了吗?另外,您遇到了什么错误?
  • @SamuelCook 这正是我的想法。但是现在,你能解释一下为什么当我删除插件初始化时,我的 PHP 代码会像它应该的那样工作吗?
  • @badZoke 为此,我很抱歉,但我将不得不向您发送该插件的链接。我没有编写此代码 - 只是简单地从互联网上下载了它。链接:o2v.net/blog/jquery-formlabels-plugin

标签: php javascript jquery forms registration


【解决方案1】:

注意$("form").submit() 函数末尾的return false。这意味着 jQuery 函数正在取代表单的 POST 操作。您没有同步重新加载页面,因此$_POST["submit"] 没有任何价值。删除 return false 行,看看页面是否按预期重新加载。

【讨论】:

  • 回过头来,插件初始化不正确。我本来应该用的。 $(function(){ $.fn.formLabels(); }); 改了之后还是一样的结果。
【解决方案2】:

这里有很多事情正在发生。需要一步一步来。

  1. 您的 PHP 应该使用 &lt;?php 格式或使用 &lt;? 短格式,但要确保我会在 &lt;?php 中编码,以便它在任何地方都兼容
  2. 当您需要回显或输出某些内容时,请使用&lt;?php echo $variable; ?&gt; 而不是&lt;?=。并不是说它不好,但它会消除任何带有 asp 样式输出的 php 配置问题。
  3. 首先测试 php 输出,然后检查 if 语句。

Jquery 不会弄乱你的 PHP。这个标题和我的回答一样随机。

【讨论】:

  • Jquery is not messing with your PHP. That title is just as random as my answer. 我明白这一点。我只是想把重点放在为什么当我取出那个代码时,它工作得很好。哈哈哈。至于你的回答,我改回 还是一样的结果。
  • 你能在提交表单时查看邮寄的内容吗?查看页眉。唯一不会命中 hello world 的情况是不满足顶部的 if 语句。首先尝试不使用 IF 进行测试。
  • 好的。我将 html 文档顶部的 php 代码更改为 &lt;?php $signuperror = "Hello World"; ?&gt; 并且有效。当页面加载时它显示“Hello World”(连同内联标签)......我假设这就是你说的让我做的事情。
  • 重新输入 IF 后,它起作用了。完全不明白这个。但是,嘿,它有效。谢谢。
  • 是的。它没有显示的原因是您可能在 get 中发送数据,或者您可能根本没有发送它。首先发布您的 HTML。然后发布您的 jQuery 和 PHP 是检查您的 html 何时将在发布或获取服务器时的最后一件事。如果需要,然后修复您的 php。您也可以使用 print_r($_POST) 打印出 post 数组进行调试。
猜你喜欢
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
相关资源
最近更新 更多