[英]How to make multiple AJAX queries after user input?
这似乎是一件简单的事情,但是我一直无法找到足够的指导。 无论用户输入( 例如this或this)如何,我都只能找到有关连续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.