可降解的jquery ajax表单与PHP -代码重复



假设我有一个我想提交的表单。我已经建立了它的形式是action=""。因此,我可以通过if(isset($_POST['something']))

访问发布的数据

示例表单。php(代码未检查,只是为了说明点):

<?php
    $result = '';
    if (isset($_POST['something']) {
        $sql = 'SELECT * FROM aTable WHERE Name = :name';
    $stmt = $db->prepare($sql); 
    $stmt->execute(array(':name' => $_POST['something']);   
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);    
    }
?>
<form action="" method="post">
    <input type="text" name="something" />
    <input type="submit" value="post" />
</form>
<div id="result">
    <pre>
    <?php echo $result; ?>
    </pre>
</div>

如果用户启用了js,现在我希望用jquery/js处理表单。

我知道该怎么做。然而,我有一个问题与数据库访问,例如有相同的查询运行在2个php文件。一个在我的原始表单页面,这是利用当js它关闭并返回数据的关联数组。然后我有一个ajaxData.php返回json,但基本上是相同的sql查询。

例子AJAXDATA.php

<?php
    $result = '';
    if (isset($_POST['something']) {
        $sql = 'SELECT * FROM aTable WHERE Name = :name';
    $stmt = $db->prepare($sql); 
    $stmt->execute(array(':name' => $_POST['something']);   
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);    
    echo json_encode($result);
    }
?>      

在我看来,这是低效的,因为我正在编写相同的代码,相同的数据访问等…两次-一次为form.php,一次为ajaxdata.php.

我应该如何构建我的表单/文件,使ajax使用相同的数据库访问&SQL代码的正常形式提交?


增加onSubmit事件处理js enable/disable

     <form action="" method="post" onSubmit="return process_ajax();">
       <input type="text" name="something" />
       <input type="submit" value="post" />
     </form>
precess_ajax()中的

返回false,这样表单将不会被提交,如果js被禁用,表单将被提交。所有的参数必须是相同的,如果形式张贴。在AJAX中发送一个额外的参数,比如ajaxForm,如果post是通过表单或AJAX来测试服务器端

现在是服务器端PHP代码检查额外的参数ajaxForm,如果它被设置或有您在AJAX中发送的值发送JSON响应,否则发送HTML页面。您的代码将看起来像这样

      if (isset($_POST['something']){
        $sql = 'SELECT * FROM aTable WHERE Name = :name';
        $stmt = $db->prepare($sql); 
        $stmt->execute(array(':name' => $_POST['something']);   
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);    
        if(isset($_POST['ajaxForm'])){
          //send JSON response
        }
        else{
          //show html page here
        }   
      }
    ?> 

相关内容

  • 没有找到相关文章

最新更新