Как сообщить пользователю о отправке ajax?

#php #jquery #mysql #ajax

#php #jquery #mysql #ajax

Вопрос:

add.php — html-разметка.

dbadd.php — серверный скрипт,

addpg.js — клиентская часть, включая AJAX

RSV— средство проверки формы

Я пытаюсь сделать следующее: сначала проверьте форму (с помощью RSV), если все в порядке, затем отправьте ajax (вот почему я использую myOnComplete ). Сообщите пользователю о отправке. Если пользователь нажал в первый раз кнопку сохранения, затем вставьте в БД. Еще обновите базу данных.

Проблемы заключаются в:

  1. Он вставляет данные в таблицу БД, но не сообщает об успехах или ошибках
  2. Я не могу понять, как вставить данные в БД, если пользователь впервые нажал кнопку сохранения или обновления данных.

Перепробовал все возможные способы. Ошибки нет. Пожалуйста, кто-нибудь, помогите мне это исправить.

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. что не так с моим вопросом, downvoter тролли

2. Мне кажется, это нормально (иначе я бы не ответил).

Ответ №1:

Для первой проблемы:

Я не могу сказать наверняка, не запустив код или не увидев живой пример, но, похоже, у вас правильная идея, и это просто ошибка синтаксиса / использования. Например:

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

Кто-нибудь, пожалуйста, ругайте меня, если я ошибаюсь, но разве «msg» и «err» не найдены в JSON ( result ), а не в xResponse? result.msg (или результат [«msg»]) и result.err (или результат [«ошибка»])

Если это так, также имейте в виду, что я полагаю, что вы получите ошибку «undefined» при попытке объявить обе эти переменные, поскольку будет присутствовать только одна из них. Возможно, вы захотите обернуть их в блоки try / catch.