Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> $_POST['submit'] не доходит до сервера, как обработать нажатие на кнопку 'submit' в форме?
Hawkmoth  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 31356
На форуме: 4 года, 11 месяцев, 15 дней
Карма:




Здравствуйте. Проблема вот в чем.
Есть простенькая форма регистрации, которая отправляет данные на сервер с помощью jquery. html-файл такой:

<?php
define('INCLUDE_CHECK',1);
require "functions.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Регистрация</title>

<script
type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script
type="text/javascript" src="script.js"></script>

</head>

<body>
<table
width="100%">
<tbody>
<tr>
<td
height="100"></td></tr>
<tr>
<td
width="180"></td>
<td
align="center">
<div
id="div-regForm">

<div
class="form-title"></div>
<div
class="form-sub-title"></div>

<form
id="regForm" action="submit.php" method="post">

<table>
<tbody>
<tr>
<td><label
for="login">Логин:</label></td>
<td><div
class="input-container"><input name="login" id="login" type="text" /></div></td></tr><tr><td width="50"></td><td><div class="under-form-label">Используется для входа на сайт</div><br></td></tr>
</tr>
<tr>
<td><label
for="password">Пароль:</label></td>
<td><div
class="input-container"><input name="password" id="password" type="password" /></div></td></tr><tr><td width="50"></td><td><div class="under-form-label">От 3-х до 20-ти символов</div><br></font></td></tr>
</tr>
<tr>
<td><label
for="email">E-mail:</label></td>
<td><div
class="input-container"><input name="email" id="email" type="text" /></div></td></tr><tr><td width="50"></td><td><div class="under-form-label">Введите действующий почтовый ящик</div><br></td></tr>
</tr>
<tr>
<td>
 </td>
<td
align="center"><br><input type="submit" name="submit" value="регистрация" /><img id="loading" src="img/ajax-loader.gif" alt="working.." />
</td>
</tr>


</tbody>
</table>

</form>

<div
id="error">
 
</div>

</div>
</td>
<td
width="170">
</td>
</tr>
</tbody>
</table>
</body>
</html>


js-скрипт, отправляющий данные на сервер:

$(document).ready(function(){

$('#regForm').submit(function(e) {

register();
e.preventDefault();

});

});


function register()
{

hideshow('loading',1);
error(0);

$.ajax({
type: "POST",
url: "submit.php",
data: $('#regForm').serialize(),
dataType: "json",
success: function(msg){

if(parseInt(msg.status)==1)
{
window.location=msg.txt;

}
else if(parseInt(msg.status)==0)
{

error(1,msg.txt);
}
}
);

}


function hideshow(el,act)
{
if(act) $('#'+el).css('visibility','visible');
else $('#'+el).css('visibility','hidden');
}

function error(act,txt)
{
hideshow('error',act);
if(txt) $('#error').html(txt);


И, наконец, php-файл обработки данных:

<?php

header("Content-Type: text/html; charset=utf-8");

if(isset($_POST['submit'])) {die(msg(0,"Access denied!"));}

if(empty($_POST['login']) || empty($_POST['password']) || empty($_POST['password2']))
{
die(msg(0,"Все поля обязательны к заполнению!"));

}


echo msg(1,"registered.html");


function msg($status,$txt)
{
return '{"status":'.$status.',"txt":"'.$txt.'"}';
}
?>


Так вот, (isset($_POST['submit'])) всё время возвращает false. Т.е., до файла обработчика не доходит $_POST['submit'], все остальные поля (логин, пароль) доходят. Если убрать js-скрипт и вызывать обработчик напрямую, всё в порядке. Кто-нибудь подскажет, в чем может быть проблема?;)



Спустя 1 час, 12 минут, 42 секунды (3.02.2012 - 22:45) nugle написал(а):
Hawkmoth
зачем тебе проверять нажата ли кнопка, если она по-любому нажата, так как аякс запускается?

Спустя 14 часов, 6 минут, 31 секунда (4.02.2012 - 12:51) Hawkmoth написал(а):
Цитата (nugle @ 3.02.2012 - 19:45)
Hawkmoth
зачем тебе проверять нажата ли кнопка, если она по-любому нажата, так как аякс запускается?

Согласен, логично. Но здесь спортивный интерес - ПОЧЕМУ аякс не передает значение $_POST['submit']? Я только начинаю изучать пхп в связке с аякс, и пытаюсь разобраться. То есть, в принципе невозможно проверить нажатие на кнопку? Пусть даже это НЕ НУЖНО, но ВОЗМОЖНО ли? Суть такова - чтобы при прямом вызове submit.php он сообщал об этом соответствующим сообщением. А если аякс не передает $_POST['submit'], это сообщение будет появляться всегда...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса