0

我对 jquery 和 ajax 还很陌生,我正在尝试将其合并到我的所有表单中。我可以做更简单的表格,但这个让我很难过。事实是:

1.必须填写至少1个输入字段

2.通过 mysqli_query 检查所有输入字段

3.当输入字段的值在 mysql 中找不到时,foreach 循环中断并且该值变量被回显,后跟“不是成员”。

问题是我可以回显“成功”或“失败”,然后在 ajax 的“成功函数(响应)”中使用它来做一些事情,但我怎样才能获取变量值并将其合并到警报中,例如:警报( //$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";
    }
4

2 回答 2

0

最好在验证通过时发回一条消息,例如"ok". 然后在 ajax 成功中,您可以检查消息是否存在"ok",如果是,您可以将其重定向到您想要的位置。如果它无效,请对返回的消息执行一些操作。

$.ajax({
   url:'/path/to server'/,
   success:function(response){
      if(response=='ok'){
         /* do redirect*/
         window.location='someOtherpage';
      }else{
         $('#formErrorElementID').text( response);
     }
  }
});

如果您需要发回特定的 url 供用户访问,可以修改响应以使用 JSON 并发回如下内容:

{ "status": "ok", "url": "newPage.php"}

或者

{ "status": "fail", "message": "is not a user"}

然后在 AJAXsuccess

    if(response.status=='ok'){
         /* do redirect*/
         window.location=response.url;
      }else{
         $('#formErrorElementID').text( response.message);
     }
于 2013-01-26T22:16:53.883 回答
0

欢迎来到堆栈交换!

首先,我想提一下您的 SQL 过程中的一个重大安全漏洞。每当您运行查询时,您总是希望清理您的条目以防止注入攻击。这样做的一些方法是通过准备好的语句。这样,潜在的恶意用户输入将不会被执行:

$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 传递的对象可能会有所不同。

希望这可以帮助。

于 2013-01-26T22:42:39.527 回答