#php #jquery #mysql #ajax
#php #jquery #mysql #ajax
Вопрос:
add.php — html-разметка.
dbadd.php — серверный скрипт,
addpg.js — клиентская часть, включая AJAX
RSV— средство проверки формы
Я пытаюсь сделать следующее: сначала проверьте форму (с помощью RSV), если все в порядке, затем отправьте ajax (вот почему я использую myOnComplete
). Сообщите пользователю о отправке. Если пользователь нажал в первый раз кнопку сохранения, затем вставьте в БД. Еще обновите базу данных.
Проблемы заключаются в:
- Он вставляет данные в таблицу БД, но не сообщает об успехах или ошибках
- Я не могу понять, как вставить данные в БД, если пользователь впервые нажал кнопку сохранения или обновления данных.
Перепробовал все возможные способы. Ошибки нет. Пожалуйста, кто-нибудь, помогите мне это исправить.
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.