Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2012, 09:46
Новичок на форуме
Отправить личное сообщение для аленка86 Посмотреть профиль Найти все сообщения от аленка86
 
Регистрация: 21.07.2012
Сообщений: 2

JS не отправляет вложения
Подобные темы видела на форуме, но признаюсь честно в JS ничего не понимаю, поэтому спрашиваю на конкретном своем примере.
У меня есть форма обратной связи. Вот она http://xn----gtbd6abawidg.xn--p1ai/Form2/index.php. Но файлы и письма отправляются только при отключении JS. При включении письма вообще не приходят с прописанном кодом для файлов, код удаляю все работает и при JS/ Подскажите как настроить JS на отправку файлов.
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2012, 09:46
Новичок на форуме
Отправить личное сообщение для аленка86 Посмотреть профиль Найти все сообщения от аленка86
 
Регистрация: 21.07.2012
Сообщений: 2

script.js
$(document).ready(function(){ /* После загрузки страницы */
	$('#contact-form').jqTransform(); /* Видоизменить форму с помощью плагина jqtransform */

	$("button").click(function(){

		$(".formError").hide();/* Спрятать все тултипы с ошибками */

	});

	var use_ajax=true;
	$.validationEngine.settings={};/* Инициализировать настройки для плагина formValidation */

	$("#contact-form").validationEngine({ 
/* Создать проверку введенных данных */
inlineValidation: false,
		inlineValidation: false,
		promptPosition: "centerRight",
		success :  function(){use_ajax=true;}, /* если все OK включить AJAX */
		failure : function(){use_ajax=false;} /* если есть ошибка, выключить AJAX */
	 })
	
	$("#contact-form").submit(function(e){

			if(!$('#subject').val().length)
			{
				$.validationEngine.buildPrompt(".jqTransformSelectWrapper","Это обязательное поле","error")
				return false;
			}
			
			if(use_ajax)
			{
				$('#loading').css('visibility','visible'); /* Показать вращающийся gif */
				$.post('submit.php',$(this).serialize()+'&ajax=1',
				
					function(data){
						if(parseInt(data)==-1)
							$.validationEngine.buildPrompt("#captcha","упс, воспользуйтесь калькулятором","error"); /* если есть ошибка, создать сообщение об ошибке в captcha */
							
						else
						{
							$("#contact-form").hide('slow').after('<h1>Ваша заявка принята. Ждите ответа на E-mail!</h1>'); /* показать сообщение подтверждения */
						}
						
						$('#loading').css('visibility','hidden'); /* Спрятать вращающийся gif */
					}
				
				);
			}
			e.preventDefault();
	})

});


index.php

<?php

session_name("fancyform");
session_start();

$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];


$str='';
if($_SESSION['errStr'])
{
	$str='<div class="error">'.$_SESSION['errStr'].'</div>';
	unset($_SESSION['errStr']);
}

$success='';
if($_SESSION['sent'])
{
	$success='<h1>Thank you!</h1>';
	
	$css='<style type="text/css">#contact-form{display:none;}</style>';
	
	unset($_SESSION['sent']);
}
?>


<!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" />



<link rel="stylesheet" type="text/css" href="jqtransformplugin/jqtransform.css" />
<link rel="stylesheet" type="text/css" href="formValidator/validationEngine.jquery.css" />
<link rel="stylesheet" type="text/css" href="demo.css" />

<?=$css?>


<script src="calendar_ru.js" type="text/javascript"></script>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="jqtransformplugin/jquery.jqtransform.js"></script>
<script type="text/javascript" src="formValidator/jquery.validationEngine.js"></script>

<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>
<script type="text/javascript" src="script.js"></script>

<script src="calendar_ru.js" type="text/javascript"></script>

</head>

<body>

<div id="main-container">

	<div id="form-container">
    <h1>Форма завки на работу</h1>
    <h2>Здесь вы можете оправить заявку на выполнение работы.</h2>
    
    <form id="contact-form" name="contact-form" method="post" action="submit.php"    
	enctype="multipart/form-data">
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="15%"><label for="name">Ваше имя:</label></td>
          <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="name" id="name" value="<?=$_SESSION['post']['name']?>" /></td>
          <td width="15%" id="errOffset">&nbsp;</td>
        </tr>
		<tr>
          <td><label for="tel">Ваш телефон:</label></td>
          <td><input type="text" class="validate[required,custom[onlyNumber]]" name="tel" id="tel" value="<?=$_SESSION['post']['tel']?>" /></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><label for="email">Ваш e-mail:</label></td>
          <td><input type="text" class="validate[required,custom[email]]" name="email" id="email" value="<?=$_SESSION['post']['email']?>" /></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
        	 <td colspan="3"><h2>Выберите тип работы и опишите требования</h2></td>
        </tr>
        <tr>
          <td><label for="subject">Тип работы:</label>
          <td><select name="subject" id="subject">
            <option value=""> - выбрать тип работы -</option>
            <option value="Диплом">Диплом</option>
            <option value="Курсовая работа">Курсовая работа</option>
            <option value="Контрольная работа">Контрольная работа</option>
            <option value="Реферат">Реферат</option>
            <option value="Эссе">Эссе</option>
				<option value="Тип работы не выбран" selected="selected">Выберите тип работы</option>
          </select>          </td>
          <td>&nbsp;</td>
        </tr>
		<tr>
          <td><label for="poss">Тема:</label></td>
          <td><input type="poss" class="validate[required]" name="poss" id="poss" value="<?=$_SESSION['post']['poss']?>" /></td>
          <td>&nbsp;</td>
        </tr>
		<tr>
          <td><label for="poss1">Предмет:</label></td>
          <td><input type="poss1" class="validate[required]" name="poss1" id="poss1" value="<?=$_SESSION['post']['poss1']?>" /></td>
          <td>&nbsp;</td>
        </tr>
		<tr>
          <td><label for="poss3">ВУЗ:</label></td>
          <td><input type="poss3"  name="poss3" id="poss3" value="<?=$_SESSION['post']['poss3']?>" /></td>
          <td>&nbsp;</td>
        </tr>
				<tr>
          <td><label for="poss1">Срок сдачи:</label></td>
		   <td><input type="text" class="validate[required]" name="poss2" id="poss2" onfocus="this.select();lcs(this)"
	onclick="event.cancelBubble=true;this.select();lcs(this)"> <?=$_SESSION['post']['poss2']?></td>	   
        </tr>
		 <td valign="top"><label for="message">Комментарий к работе:</label></td>
          <td><textarea name="message" id="message" cols="35" rows="5"><?=$_SESSION['post']['message']?></textarea></td>
          <td valign="top">&nbsp;</td>
        </tr>
		<tr>
          <td><label for="attachfile">Методичка:</label></td> 
             <td><input name="attachfile" type="file" size="28"> </td>
			  <td><div onclick="SendFile();">Отправить файл через Ajax</div></td>
			 	 </tr>
        <tr>
        	 <td colspan="3"><h2>Введите капчу и нажмите "Отправить".</h2></td>
        </tr>
        <tr>
          <td><label for="captcha"><?=$_SESSION['n1']?> + <?=$_SESSION['n2']?> =</label></td>
          <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td valign="top">&nbsp;</td>
          <td colspan="2"><input type="submit" name="button" id="button" value="Заказать" />
          <input type="reset" name="button2" id="button2" value="Очистить" />
          
          <?=$str?>          <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td>
        </tr>
      </table>
      </form>
      <?=$success?>
    </div>
	<div class="tutorial-info">	
	</div>

</div>

</body>
</html>


submit.php

<?php

/* config start */

$emailAddress = 'nn@info-univer.ru';

/* config end */

require "phpmailer/class.phpmailer.php";

session_name("fancyform");
session_start();


foreach($_POST as $k=>$v)
{
	if(ini_get('magic_quotes_gpc'))
	$_POST[$k]=stripslashes($_POST[$k]);
	
	$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}
/* ???? ?????? ???? */
if(count($err))
{
/* ???? ????? ?????????? ? ??????? AJAX */
	if($_POST['ajax'])
	{
		echo '-1';
	}
/* ? ????????? ?????? ????????? ?????? SESSION ? ???????? ??????? ?? ????? */
	else if($_SERVER['HTTP_REFERER'])
	{
		$_SESSION['errStr'] = implode('<br />',$err);
		$_SESSION['post']=$_POST;
		
		
		header('Location: '.$_SERVER['HTTP_REFERER']);
	}

	exit;
}
/* ???? ?????? */
$msg=
'<strong>Имя:</strong>	'.$_POST['name'].'<br />
<strong>Телефон:</strong>	'.$_POST['tel'].'<br />
<strong>e-mail:</strong>	'.$_POST['email'].'<br />
<strong>Тип работы:</strong>	'.$_POST['subject'].'<br />
<strong>Тема работы:</strong>	'.$_POST['poss'].'<br />
<strong>Предмет:</strong>	'.$_POST['poss1'].'<br />
<strong>ВУЗ:</strong>	'.$_POST['poss3'].'<br />
<strong>Срок сдачи:</strong>	'.$_POST['poss2'].'<br />
<strong>Комментарий:</strong><br /> '.nl2br($_POST['message']).'<br />
<strong>IP:</strong>	'.$_SERVER['REMOTE_ADDR'].'<br />
';
$target_path = "uploads/";

 
$target_path = $target_path . basename( $_FILES['attachfile']['name']); 
if(move_uploaded_file($_FILES['attachfile']['tmp_name'], $target_path)) {
   

$mail = new PHPMailer();
$mail->IsMail();

$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = $_POST['poss'];

if(pathinfo($_FILES['attachfile']['name'], PATHINFO_EXTENSION)!='php'){
$mail->AddAttachment($target_path, basename( $_FILES['attachfile']['name']));
}

$mail->MsgHTML($msg);

$mail->Send();
}
unset($_SESSION['post']);
/* ????? ?????? ???? ?????????? */

if($_POST['ajax'])
{
	echo '1';
}
else
{
	$_SESSION['sent']=1;
	
	if($_SERVER['HTTP_REFERER'])
		header('Location: '.$_SERVER['HTTP_REFERER']);
	
	exit;
}
/* ?????????????? ??????? */
function checkLen($str,$len=2)
{
	return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]),"utf-8") > $len;
}

function checkEmail($str)
{
	return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}
?>

Последний раз редактировалось аленка86, 21.07.2012 в 09:54.
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2012, 17:05
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

$.post('submit.php',$(this).serialize()+'&ajax=1',


файлы таким образом не отправляются. либо удалите эту строчку, и отправляйте форму без жс, либо реализуйте отправку формы через FormData(), но тогда вам придётся отказаться от поддержки ИЕ.
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2012, 17:06
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

AJAX проблема загрузки файла
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
JS Ajax отправляет данные несколько раз Astraport Общие вопросы Javascript 9 18.07.2012 12:21
Разное оформление для посетителей с JS и без fry2 Events/DOM/Window 13 03.02.2012 17:45
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23