如何通知用户ajax提交?

时间:2011-10-04 03:56:08

标签: php jquery mysql ajax

add.php - html标记。

dbadd.php - serverside脚本,

addpg.js - 包括AJAX在内的客户端

RSV - 表单验证器

我正在尝试做以下事情:首先验证表单(使用RSV),如果一切正常,那么ajax submit(这就是为什么我使用myOnComplete)。 告知用户提交内容。如果用户第一次按下保存按钮,则插入db。否则更新db。

问题是:

  1. 它将数据插入到db表中,但不会通知有关成功或错误
  2. 我无法弄清楚如何将数据插入db如果用户按下了 第一次保存按钮或更新数据。
  3. 尝试了所有可行的方法。没有错误。请有人帮我解决这个问题。

    addpg.js

     function myOnComplete() {
        return true;
    }
    
    
    $(document).ready(function () {
    
        $("#add_form").RSV({
            onCompleteHandler: myOnComplete,
            rules: [
                "required,name,Name field required.",
                "required,title,Title field required.",
                "required,menu, Menu field required",
                "required,parentcheck,Parentcheck required",
                "if:parentcheck=1,required,parent,Parent required",
                "required,content,Page content field required"
                ]
        });
    
    });
    
    
    $("#submit_btn").click(function () {
        CKEDITOR.instances.content.updateElement();
        $("#add_form").submit(function (e) {
            e.preventDefault();
            dataString = $("#add_form").serialize();
            $.ajax({
                type: "POST",
                url: "processor/dbadd.php",
                data: dataString,
                dataType: "json",
                success: function (result, status, xResponse) {
                    //do something if ajax call is success
                    var message = xResponse.getResponseHeader("msg");
                    var err = xResponse.getResponseHeader("err");
                    if (message != null) {
                        //do what you like with the message
                    }
                    if (err != null) {
                        //do what you like with the erro
                    }
                },
                error: function (e) {
                    //ajax call failed
                    alert(e);
                }
            });
        });
    });
    

    dbadd.php

    <?php
    require '../../core/includes/common.php';
    
    $name=filter($_POST['name'], $db);
    $title=filter($_POST['title'], $db);
    $parentcheck=filter($_POST['parentcheck'],$db);
    if(isset ($_POST['parent'])) $parent=filter($_POST['parent'],$db);
    else $parent=$parentcheck;  
    $menu=filter($_POST['menu'], $db);
    $content = $db->escape_string($_POST['content']);
    
    $result=$db->query("INSERT INTO menu (parent, name, showinmenu) VALUES ('$parent', '$name', '$menu')") or die($db->error);
    $new_id = $db->insert_id;
    $result2=$db->query("INSERT INTO pages (id, title, content) VALUES ('$new_id', '$title', '$content')") or die($db->error);  
    
    if ($new_id>0){  
    echo "{";  
    echo '"msg": "All right" ';
    echo "}";  
    }else{ 
    echo "{"; 
    echo
    '"err": "error"';  
    echo "}";  
    }
    
    ?>  
    

    add.php

    <div id="add">
    <form id="add_form" method="" action=""> 
    <input type="text" name="name" id="name" size="40"  value="" class="text-input" />  
    <input type="text" name="title" id="title" size="40"  value="" class="text-input" />  
    <select name="menu" id="menu">
    <option value="" selected="selected">sample</option>
    <option value="1">sample 1</option>
    <option value="2">sample 2</option>
    <option value="0">sample 3</option>
    </select>
    <input type="radio" class="parentcheck" name="parentcheck" value="0"/>
    <input type="radio" class="parentcheck" name="parentcheck" value="1"/>
    <select name="parent" id="parent"></select>
    
    <textarea id="content" style="width:100%" name="content"></textarea>
    <input type="submit" name="submit" class="button" id="submit_btn" value="Save" />
    </form>
    </div>
    <script type="text/javascript" src="../../core/includes/ckeditor/ckeditor.js"></script>
    <script type="text/javascript" src="../../core/scripts/admin/addpg.js"></script>
    <script type="text/javascript" src="../../core/scripts/admin/rsv.js"></script>
    

1 个答案:

答案 0 :(得分:2)

对于第一个问题:

如果没有实际运行代码或看到实例,我不能肯定地说,但看起来你有正确的想法,这只是一个语法/使用错误。例如:

var message = xResponse.getResponseHeader("msg");
var err = xResponse.getResponseHeader("err");

如果我错了,请骂我,但是在JSON(result)而不是xResponse中找不到“msg”和“err”? result.msg(或结果[“msg”])和result.err(或结果[“错误”])

如果是这样,也要注意我 - 相信 - 在尝试声明这两个变量时,您将收到“未定义”错误,因为只有其中一个变量存在。您可能希望将它们包装在try / catch块中。