我对jquery和ajax很新,我正试图融入我的所有形式。我可以做更简单的形式,但是这个让我很难过。事实是:
1.必须填写至少1个输入字段
2.通过mysqli_query
检查所有输入字段3.当输入字段具有在mysql中找不到的值时,foreach循环断开并且该值变量被回显,接着是“不是成员”。
问题是我可以回应“成功”或“失败”,然后在ajax'成功函数(响应)'中使用它来做一些事情,但我怎样才能获取变量值并将其合并到一个警告中:alert(// $ value //不是会员)?这是php:
foreach($_POST as $value)
{
$usercheck = "SELECT email FROM users WHERE email = '$value'";
$usercheck = $db->query($usercheck);
if($usercheck->num_rows !== 0 || $value =="")
{
$x="1";
}
else
{
$x="2";
}
break;
}
if($value == "")
{
echo "none filled in";
}
else
if ($x == "1")
{
echo "all filled boxes are users";
}
else
{
echo $value." is not a user";
}
答案 0 :(得分:0)
最好在验证通过"ok"
时发送回邮件。然后在ajax成功中,您可以检查消息是否为"ok"
,如果是,您可以重定向到您想要的位置。如果它无效,请使用返回的消息执行somethig。
$.ajax({
url:'/path/to server'/,
success:function(response){
if(response=='ok'){
/* do redirect*/
window.location='someOtherpage';
}else{
$('#formErrorElementID').text( response);
}
}
});
如果您需要发送回特定网址以供用户转到,可以修改响应以使用JSON并发回如下内容:
{ "status": "ok", "url": "newPage.php"}
OR
{ "status": "fail", "message": "is not a user"}
然后在AJAX success
if(response.status=='ok'){
/* do redirect*/
window.location=response.url;
}else{
$('#formErrorElementID').text( response.message);
}
答案 1 :(得分:0)
欢迎使用Stack Exchange!
首先,我想提一下SQL过程中存在的重大安全漏洞。无论何时运行查询,您总是希望清理条目以防止注入攻击。一些方法是通过prepared statements。这样,将不会执行潜在的恶意用户输入:
$usercheck = $db->prepare("SELECT email FROM users WHERE email = ?");
$usercheck->execute(array($value));
如上所述,我认为JSON对象是最实用的,因为它是与许多语言兼容的对象结构。你的最后三个'回声'分别是这样的:
echo json_encode(array("success" => false, "message"=> "Empty field found."));
...
echo json_encode(array("success" => true, "message"=> "all filled boxes are users"));
...
echo json_encode(array("success" => false, "message"=> $x."is not a user."));
在JavaScript方面,您将拥有:
..., function(response) {
result = JSON.parse(response);
(result.success) ? ...success code... : alert(result.message);
});
根据您的需要,您从PHP传递的对象可能会有所不同。
希望这有帮助。