PHP:如何在没有表单回发的情况下执行查询?

时间:2012-05-22 04:53:25

标签: php ajax

我有一个表格,我想要进行验证。但是有一个字段我想验证编写查询。我不希望表单回发,因为在回发后,表单中填写的所有值都将丢失。有没有办法我可以编写没有回发的查询或如果我必须回发如何保留值?请帮忙

3 个答案:

答案 0 :(得分:2)

如果您使用AJAX(jQuery),则可以在不刷新浏览器的情况下发布XML请求(如果这是您需要的)。 为此,只需创建一个包含一些文本字段和一个提交按钮的表单,为所有内容提供一个ID并为该按钮添加一个click-Listener:

$('#submit-button').click(function() {
    var name = $('#username').val();
    $.ajax({
        type: 'POST',
        url: 'php_file_to_execute.php',
        data: {username: name},
        success: function(data) {
            if(data == "1") {
                document.write("Success");   
            } else {
                document.write("Something went wrong");
            }
        }
    });
});

如果用户点击带有“submit-button”-ID的按钮,则会调用此函数。然后使用POST将textfield的值发送到php_file_to_execute.php。在这个.php文件中,你可以验证用户名并输出结果:

if($_POST['username'] != "Neha Raje") {
    echo "0";
} else {
    echo "1";
}

我希望我能帮到你! :)

答案 1 :(得分:0)

你可能想要改写你写的内容,有点不清楚。我是这样做的;

<form method="post">
Text 1: <input type="text" name="form[text1]" value="<?=$form["text1"]?>" size="5" /><br />
Text 2: <input type="text" name="form[text2]" value="<?=$form["text2"]?>" size="5" /><br />
<input type="submit" name="submit" value="Post Data" />
</form>

当我处理数据时,就像这样;

<?php
if ($_POST["submit"]) {
 $i = $_POST["form"];
 if ($i["text1"] or ..... ) { $error = "Something is wrong."; }
 if ($i["text2"] and ..... ) { $error = "Maybe right."; }

 if (!$error) {
  /*
   * We should do something here, but if you don't want to return to the same
   * form, you should definitely post a header() or something like that here.
   */
   header ("Location: /"); exit;
 }
 //
}

if (!$_POST["form"] and !$_GET["id"]) {
} else {
 $form = $_POST["form"];
}
?>

通过这种方法,值不会丢失,除非将它们设置为迷路。

答案 2 :(得分:0)

使用jQuery的$.post()方法:

$('#my_submit_button').click(function(event){
  event.preventDefault();
  var username = $('#username').val();
  $.post('validate.php', {username: username, my_submit_button: 1}, function(response){
   console.log(response); //response contain either "true" or "false" bool value 
  });
});

在validate.php中,异步获取表单中的用户名,如下所示:

if(isset($_POST['my_submit_button']) && $_POST['my_submit_button'] == 1 && isset($_POST['username']) && $_POST['username'] != "") {

  // now here you can check your validations with $_POST['username']
  // after checking validations, return or echo appropriate boolean value like:
  // if(some-condition) echo true;
  // else echo false;

}

注意:在使用AJAX执行数据库更改脚本之前,请考虑了解与安全相关的漏洞和其他问题。