php - 最简单的表单提交而无需重定向?

原文 标签 php jquery ajax forms

所以我一直在这个项目上丧命,也许是因为我尝试过这种艰难的方式:)我一直在尝试将以下动态PHP表单转换为提交相同的信息,但是通过AJAX,我没有经验,但是我想提交而不离开页面。

在准备准备面试潜在程序员时,在研究“每个PHP程序员应该知道的事情”(http://terrychay.com/article/php-coders.shtml)时,我被介绍了一种使用远程脚本和iframe完成相同任务的不同方法。意识到有很多方法可以做到这一点,采用以下表格并提交而不离开页面的“最佳”方式是什么?既然我最了解PHP,那么有没有一种更适合我,还是我应该继续使用AJAX?

<form action="functions.php?do=save" method="POST" id="saveSettings">
<table width=100%>
<tr><th>Setting</th><th>Value</th><th>Active</th></tr>
<?
include 'db.php';

$i=0;
    foreach($db->query('SELECT * from settings') as $row) {
    echo ($i % 2)?'<tr class="odd">':'<tr class="even">';
        print_r("<td width=200>" . $row[1] . "</td>
        <td><input type=\"textbox\" name=\"" . $row[1] . "[]\" value=\"" . $row[2] . "\"></td> 
        <td><input type=\"hidden\" name=\"" . $row[1] . "[1]\" value=\"INACTIVE\"> "); //set value so it never passes NULL
            if ($row[3] == "ACTIVE"){
            print_r("<input type=\"checkbox\" name=\"" . $row[1] . "[1]\" value=\"ACTIVE\" checked=\"true\"></td></tr>");
            }
            else{
            print_r("<input type=\"checkbox\" name=\"" . $row[1] . "[1]\" value=\"ACTIVE\"></td></tr>");

            }
    $i++;
    }
?>
</tbody>
</table>
<input type="submit" value="Save Settings">
</form>

最佳答案

这很简单,实际上,您需要做的就是以下jQuery:

$('form').on('submit', function(){
    var $this = $(this);
    $.ajax({
        type: $this.prop('method'),
        url: $this.prop('action'),
        data: $this.serialize(),
        success: function(data){
          //do something with the return of the php script
        }
    });
    return false; //prevent the form from causing the page to refresh
});


$.serialize()用于将表单转换为URL编码的文本字符串。这使获取php脚本中的值变得很简单,因为鉴于上述表单的结构,没有任何变化。

相关文章:

javascript - AJAX PHP变量以填充表单字段jquery

javascript - 如何使用Javascript addEventListener()覆盖HTML表单默认的commit()行为

javascript - 您如何将事件挂钩到YUI中的数据源?

javascript - 在AJAX请求之后,URL会自动附加$ _GET-parameters

javascript - 使用javascript将元素内的数字取整

java - 通过POST将BitMap对象(和其他一些字符串)发送到服务器

javascript - 如何防止animationend功能

javascript - 一键启用启用必填字段验证

php - 如何为get_meta_tags()和get_headers()设置超时

javascript - 在laravel刀片页面中说$ .ajax不是函数