#php #javascript #ajax #forms
#php #javascript #ajax #формы
Вопрос:
У меня есть форма:
<form action="#" method="post" id="hubForm">
<label class="labelText">Expiration Date:</label>
<input class="datBox" type="text" id="cal" name="date">
<div class="clr"></div>
<div class="clr"></div>
<label class="labelText">Hub Name</label>
<input class="inputTxt" type="text" value="" name="name" />
<div class="clr"></div>
<label class="labelText">Description</label>
<textarea class="textArea" name="desc"></textarea>
<div class="clr"></div>
<input class="submitButt" type="submit" value="" />
<div class="clr"></div>
</form>
И у меня есть этот JavaScript:
$('#hubForm').submit(function() {
$.ajax({
url: "hubControl.php",
type: "post",
data: $(this).serialize()
});
});
И этот PHP-код:
//Add the hub, task, or project to the database
mysql_query("INSERT INTO ".$type."s(".$IDvar.", name, description, users, expDate)
VALUES(".$ID.", "".$_POST['title']."", "".$_POST['desc']."", ".$ID.", ".$_POST['date'].")");
Но он отказывается добавлять что-либо в базу данных. Я переписал код для использования $_GET и протестировал PHP, и я убедился, что он работает.
Что касается JavaScript, я также пробовал такие вещи, как
$.post("hubControl.php", $('#hubForm').serialize());
но, похоже, ничего не работает. Есть идеи?
РЕДАКТИРОВАТЬ: HTML-форма была предоставлена мне кем-то другим, поэтому я не знаю, на 100% ли она совместима с AJAX / JavaScript с такими вещами, как метод =»post». У вас у всех будет идея получше, чем у меня.
Комментарии:
1. Можете ли вы протестировать с помощью Fiddler ot Firebug, чтобы увидеть, что публикуется на странице PHP.. кроме того, вы уверены, что $(this) ссылается на форму внутри вызова ajax.. Я не уверен, что контекстом этого является #hubForm ..
2. Я пробовал это без $this и вместо этого использовал $ (‘#hubForm’) и $ (‘hubForm’). Я попытаюсь использовать Firebug, но я с ним не знаком.
3. Похоже, у Бобби будет еще один полевой день: бобби-таблицы , которые
Ответ №1:
Если он работает с $ _GET, а не с $ _POST, похоже, что массив $ _POST заполняется неправильно.
Я бы рекомендовал вам начать работу с этим, просмотрев ваш массив $ _REQUEST или $ _POST при загрузке страницы. print_r($_POST) в некоторых тегах HTML pre может быть очень полезным.
Если вы знаете, что PHP даже не получает правильные данные, вы можете сосредоточиться на исправлении Ajax / jQuery.
Комментарии:
1. Кроме того, пожалуйста, ознакомьтесь с внедрением MySQL и почему вы должны очищать любой пользовательский ввод с помощью mysql_real_escape();
2. Я использую диалоговое окно пользовательского интерфейса jQuery, поэтому, когда я пытаюсь напечатать что-либо на странице PHP, оно просто ничего не показывает. На самом деле, возможно, он вообще не попадает в файл PHP, насколько я знаю из моих тестов. Я также пытался создать функцию submit() и выполнить onClick() и поместить alert() в функцию, но ничего не произошло. Я попробую print_r($ _POST) через несколько минут и посмотрю, появится ли что-нибудь
3. Если вы введете print_r($POST) в свой журнал ошибок, будет очевидно, попадает ли на страницу даже запрос ajax .. попробуйте что-то вроде: $test = print_r($_POST,1); error_log(«—-POST——n».$test);
4. Это определенно происходит и получает значения, которые я отправляю. Это помогло мне найти проблему. Я распечатал свой SQL-запрос и, несмотря на то, что он работает с $ _GET, материал получается пустым и с лишними запятыми. Время работы над этим
Ответ №2:
Поскольку вы используете jQuery, вам следует рассмотреть возможность использования плагина ajaxForm. Он очень прост в использовании, вы можете просто добавить его в свой проект с минимальной настройкой.
Ответ №3:
Попробуйте использовать тип в верхнем регистре:
$.ajax({
url: "hubControl.php",
type: "POST",
data: $(this).serialize()
});