繁体   English   中英

用户输入后如何进行多个AJAX查询?

[英]How to make multiple AJAX queries after user input?

这似乎是一件简单的事情,但是我一直无法找到足够的指导。 无论用户输入( 例如thisthis)如何,我都只能找到有关连续AJAX查询的信息。

我要做的是创建一个调查,以便用户回答问题后,网站将问题替换为下一个问题,依此类推。

这是到目前为止(在.php文件中):

<head> ,我为每个后续元素调用一个函数:

<script type="text/javascript">
    function nextPage(url) {
        $("#consent-form").empty();
        $("#consent-form").load(url);
    }
</script>

也许那不是完成的方式。 我不知道。 就像我说的那样,我在这方面找不到足够的帮助。 据我所知,empty()不应删除#consent-form,而只能删除其内容和子级,这正是我想要的行为。

这是我想在每个回答的问题后换掉的div的初始html和php:

<div id="consent-form">

   <?php

        // Check for a valid email address.
        $email = $emailErr = "";

        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            if (empty($_POST["email"])) {
                $emailErr = "* Your email address is required.";
            } else {
                $email = test_input($_POST["email"]);
                if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                    $emailErr = "* Please enter a valid email address.";
                } else {
                    $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
                    $query = "INSERT INTO survey VALUES ('" . $email . "','" . $actual_link . "','','')";
                    mysql_query($query);
                    echo '<script type="text/javascript">'
                        , 'nextPage("survey.php");'
                        , '</script>'
                        ;
                    }
                }
            }

        function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
        }
     ?>
     <p>
     [Consent form text]
     </p>
     <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     Please enter your email address: <input type="text" name="email" value="<?php echo $email;?>">
     <span class="error"> <?php echo $emailErr;?></span>
     <br>
     <input type="submit" value="Begin Study">
     </form>
     </div>

如您所知,我正在尝试在此处进行一些表单验证。

这成功地将下一页(“ survey.php”)的内容注入到了同意书div中。 使用上面显示的nextPage()函数,“ survey.php”包括以下内容:

$("#csp_form").on('submit', function() {
    nextPage("other.php");
});

但这无法将“ other.php”的同意书形式的div注入。

但是,现在,即使表单验证也不起作用。 根据Firebug的说法,即使我注释掉了所有的jquery和javascript函数,jquery库也引发了某种错误,并且卡在了一些永久的加载操作中。 (这个问题已被解决。)

我将要开始扔东西。 我尝试了许多其他不同的技术,但是它们都不起作用,我也没弄清楚它们。 希望此最新版本足以为您提供指导。

抱歉,这么长的时间都是如此,但通常人们会抱怨信息太少,所以我想确保包括所有信息。

编辑:

根据请求,这是Survey.php的当前完整内容(出于隐私目的更改了文本内容):

<script type="text/javascript">
    $("#icecream_form").on('submit', function() {
        nextPage("other.php");
        return false;
    });
</script>

<br>
<h2>What's your favorite ice cream flavor?</h2>
<form method="post" id="icecream_form">
    <input type="radio" name="icecream" value="vanilla"> Vanilla
    <br>
    <input type="radio" name="icecream" value="chocolate"> Chocolate
    <br>
    <input type="radio" name="icecream" value="other"> Something else
    <br>
    <input type="radio" name="icecream" value="none" checked> I don't have a favorite.
    <br>
    <br>
    <input type="submit" name="icecream_submit" value="Go" onsubmit="return(false)">
</form>

点击“提交”后,同意书中的内容会返回并带有来自电子邮件表的错误消息(“请输入电子邮件地址”),这意味着该电子邮件表已被重新发布。 我无法理解如果该div中的所有内容都被Survey.php中的内容真正替换了,那怎么可能。

我认为问题只是我缺少$(document).ready(function () {$("#icecream_form").on('submit', function() { 。这使return false;可以正常工作。

但是,我也换了一个jQuery版本的PHP表单验证,并删除了nextPage()函数来代替让每个页面都有自己的.load(),所以这些事情也可能有所作为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM