Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2012, 08:57
Интересующийся
Отправить личное сообщение для Ranetka Посмотреть профиль Найти все сообщения от Ranetka
 
Регистрация: 11.10.2012
Сообщений: 13

Не работает форма для сбора информации на jquery
Описание:
На сайте есть ссылка для скачивания файла, при нажатии на нее сначала появляется pop-up окно с предложением ввести инфомацию о себе. После отправки информации на сервер файл скачивается, появляется окно с благодарностью.
Собственно проблема (вернее даже две):
1) Поле "телефон" разбито на 5 ячеек, первые 4 обязательные для ввода, последняя простая.
Мне нужно, что бы при проверки корректности введенных данных подсвечивались все 5 ячеек поля, но выводилось только одно сообщение об ошибке (а не на каждую). Сейчас вроде все так и есть, но проверяется на корректность только первая ячейка.
2) При нажатии на submit (при верном заполнении всех полей) появляется ошибка: "Server error".
Думаю, что эти две проблемы связаны, но не могу понять в чем и где я ошиблась.

Посмотреть код и как это работает можно здесь.
Заранее спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 13.10.2012, 06:58
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

1)Стр.26
var phone = $.trim($('input[name^=phone_]').val());
if (phone == "") {
  error_elements.push('input[name^=phone_]');
  error_message += (error_message == "" ? "" : ". ") + "Введите телефон";
  error_phone = true;
}

проверяет только первое поле.
Надо перебрать все:
var phone ="";
$('input[name^=phone_]').each(function(){
  phone += $.trim($(this).val());
});
if (phone == "") {
  error_elements.push('input[name^=phone_]');
  error_message += (error_message == "" ? "" : ". ") + "Введите телефон";
  error_phone = true;
}


2)Ответ сервера:
The requested URL /ajax_forms was not found on this server.
Неправильный адрес вызываемого скрипта:
Стр.52
$.ajax({
  url : '/ajax_forms',

Должно быть что-то вроде
url : '/ajax_forms.php',


Удачи!

Последний раз редактировалось NikolasGrad, 13.10.2012 в 07:08.
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2012, 10:14
Интересующийся
Отправить личное сообщение для Ranetka Посмотреть профиль Найти все сообщения от Ranetka
 
Регистрация: 11.10.2012
Сообщений: 13

NikolasGrad, спасибо за ответ.
Сейчас, конечно, проверка идет по всем ячейкам поля "телефон", но если заполнить хотя бы одну, то скрипт пропустит. А мне нужно, что бы обязательно были первые 4 заполнены, и желательно только цифрами...
А с адресом скрипта вообще беда, я его уже как только не прописывала, все равно ошибка: "Server error". Может дело еще в чем то?
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2012, 10:22
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

Поменяй условие
if (phone == "") {

на
if (String(phone).length < 11 || isNaN(parseInt(phone))) {

так будет точнее.

Последний раз редактировалось NikolasGrad, 13.10.2012 в 10:30.
Ответить с цитированием
  #5 (permalink)  
Старый 13.10.2012, 10:31
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

А где скрипт находится физически?
Впиши полный url 'http:// и т.д.'
Ответить с цитированием
  #6 (permalink)  
Старый 13.10.2012, 10:43
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

У тебя рнр не работает, я его почти весь вижу.
Скорее всего нет открывающего <?php и закрывающего ?>
Кстати он с ошибками.
Скинь его весь сюда, я поправлю.
Ответить с цитированием
  #7 (permalink)  
Старый 13.10.2012, 11:14
Интересующийся
Отправить личное сообщение для Ranetka Посмотреть профиль Найти все сообщения от Ranetka
 
Регистрация: 11.10.2012
Сообщений: 13

<?php
	case "request_info":

		//if required fields does not set then exit
		if( empty($_REQUEST["firstname"]) ||
			empty($_REQUEST["lastname"]) ||
			empty($_REQUEST["company"]) ||			
			empty($_REQUEST["position"]) ||
			empty($_REQUEST["phone"]) ||
			empty($_REQUEST["email"]) ||
		)
			throw new AjaxFormsAPI_Exception_InvalidParameter();

		$firstname = $_REQUEST["firstname"];
		$lastname = $_REQUEST["lastname"];
		$company = $_REQUEST["company"];
		$position = $_REQUEST["position"];
		$phoneCountryCode = $_REQUEST['phone_country_code'];
		$phonePart1 = $_REQUEST['phone_part1'];
		$phonePart2 = $_REQUEST['phone_part2'];
		$phonePart3 = $_REQUEST['phone_part3'];
		$phoneExt = $_REQUEST['phone_ext'];		
		$email = $_REQUEST["email"];
		
		$phone = '+' . $phoneCountryCode . '(' . $phonePart1. ')' . $phonePart2 . '-' . $phonePart3 . 'x' . $phoneExt;
		$page_url = $_REQUEST["page_url"];
		$prev_url = $_REQUEST["prev_url"];

		/**
		 * Send data to sales force
		 */
		$post_fields = array(
			"oid" => Config::$sales_force_oid,
			"debug" => Config::$debug,
			"debugEmail" => Config::$admin_email,
			"lead_source" => "Contact Us",
			"first_name" => $firstname,
			"last_name" => $lastname,
			"company" => $company,
			"position" => $position,
			"phone" => $phone,
			"email" => $email,
		);

		if($geoip_data = getGeoData($client_ip)){
			$post_fields["city"] = $geoip_data["city"];
		}

		$result = sendSalesForce($post_fields);
		$logger->logDebug(basename(__FILE__) . ": Send data to sales force:\n %s", var_export($result, true));
		
		/**
		 * Save to DB
		 */
		$res = $forms->set(array(
			"firstname" => $firstname,
			"lastname" => $lastname,
			"company" => $company,
			"position" => $position,
			"phone" => $phone,
			"email" => $email,
			"client_ip" => $client_ip,
			"page_url" => $page_url,
			"prev_url" => $prev_url,
		));

		$logger->logDebug(basename(__FILE__) . ": Save data to DB : %s", var_export($res, true));

		$_result=json_encode(array(
			'code' => AJAX_FORMS_ERROR_CODE_SUCCESS,
			'message' => false,
			'redirect' => false
		));
		if(isset($_REQUEST['callback']))$_result="{$_REQUEST['callback']}($_result)";
		die($_result);

		break;
?>
Ответить с цитированием
  #8 (permalink)  
Старый 13.10.2012, 11:16
Интересующийся
Отправить личное сообщение для Ranetka Посмотреть профиль Найти все сообщения от Ranetka
 
Регистрация: 11.10.2012
Сообщений: 13

Скрипт лежит там же где и index.html
Ответить с цитированием
  #9 (permalink)  
Старый 13.10.2012, 11:39
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

<?php // Начало файла 
    include ('/home/cp339125/путь к файлу с библиотекой');
    /** файл с библиотекой
    *   где функции getGeoData(), sendSalesForce(), logDebug()
    *   где $sales_force_oid, $debug, $admin_email, $client_ip
    *   без него работать не будет
    */

?>

Последний раз редактировалось NikolasGrad, 13.10.2012 в 11:51.
Ответить с цитированием
  #10 (permalink)  
Старый 13.10.2012, 12:29
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

js не надо было править, правильный адрес был
url:'http://lagonskaya.ru/public_htmls/ajax_forms.php',

--------------------
ajax_forms.php
<?php
    include ('/home/cp339125/файл с библиотекой');
    /** 
    *  "файл с библиотекой" - это файл,  где определяются функции getGeoData(), sendSalesForce(), logDebug(),
    *  и переменные $sales_force_oid, $debug, $admin_email, $client_ip
    *   без него работать не будет
    */
		//if required fields does not set then exit
		if( empty($_REQUEST["firstname"]) ||
			empty($_REQUEST["lastname"]) ||
			empty($_REQUEST["company"]) ||			
			empty($_REQUEST["position"]) ||
			empty($_REQUEST["phone_country_code"]) ||
			empty($_REQUEST["phone_part1"]) ||
			empty($_REQUEST["phone_part2"]) ||
			empty($_REQUEST["phone_part3"]) ||
			empty($_REQUEST["phone"]) ||
			empty($_REQUEST["email"])
		)
			throw new AjaxFormsAPI_Exception_InvalidParameter();

		$firstname = $_REQUEST["firstname"];
		$lastname = $_REQUEST["lastname"];
		$company = $_REQUEST["company"];
		$position = $_REQUEST["position"];
		$phoneCountryCode = $_REQUEST['phone_country_code'];
		$phonePart1 = $_REQUEST['phone_part1'];
		$phonePart2 = $_REQUEST['phone_part2'];
		$phonePart3 = $_REQUEST['phone_part3'];
		$phoneExt = $_REQUEST['phone_ext'];		
		$email = $_REQUEST["email"];
		
		$phone = '+' . $phoneCountryCode . '(' . $phonePart1. ')' . $phonePart2 . '-' . $phonePart3 . 'x' . $phoneExt;
		$page_url = $_REQUEST["page_url"];
		$prev_url = $_REQUEST["prev_url"];

		/**
		 * Send data to sales force
		 */
		$post_fields = array(
			"oid" => Config::$sales_force_oid,
			"debug" => Config::$debug,
			"debugEmail" => Config::$admin_email,
			"lead_source" => "Contact Us",
			"first_name" => $firstname,
			"last_name" => $lastname,
			"company" => $company,
			"position" => $position,
			"phone" => $phone,
			"email" => $email
		);

		if($geoip_data = getGeoData($client_ip)){
			$post_fields["city"] = $geoip_data["city"];
		}

		$result = sendSalesForce($post_fields);
		$logger->logDebug(basename(__FILE__) . ": Send data to sales force:\n %s", var_export($result, true));
		
		/**
		 * Save to DB
		 */
		$res = $forms->set(array(
			"firstname" => $firstname,
			"lastname" => $lastname,
			"company" => $company,
			"position" => $position,
			"phone" => $phone,
			"email" => $email,
			"client_ip" => $client_ip,
			"page_url" => $page_url,
			"prev_url" => $prev_url
		));

		$logger->logDebug(basename(__FILE__) . ": Save data to DB : %s", var_export($res, true));

		$_result=json_encode(array(
			'code' => AJAX_FORMS_ERROR_CODE_SUCCESS,
			'message' => false,
			'redirect' => false
		));
		if(isset($_REQUEST['callback']))$_result="{$_REQUEST['callback']}($_result)";
		die($_result);

		break;
?>

Последний раз редактировалось NikolasGrad, 13.10.2012 в 12:41.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery для загрузки страницы в <div> Dr.Holerik jQuery 12 11.10.2016 17:36
jCart. Не работает ajax для динамически созданных товаров. Whitetown jQuery 2 09.03.2012 08:31
Не работает анимация jquery hugi jQuery 1 30.08.2010 20:25
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49