12.10.2012, 08:57
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
Не работает форма для сбора информации на jquery
Описание:
На сайте есть ссылка для скачивания файла, при нажатии на нее сначала появляется pop-up окно с предложением ввести инфомацию о себе. После отправки информации на сервер файл скачивается, появляется окно с благодарностью.
Собственно проблема (вернее даже две):
1) Поле "телефон" разбито на 5 ячеек, первые 4 обязательные для ввода, последняя простая.
Мне нужно, что бы при проверки корректности введенных данных подсвечивались все 5 ячеек поля, но выводилось только одно сообщение об ошибке (а не на каждую). Сейчас вроде все так и есть, но проверяется на корректность только первая ячейка.
2) При нажатии на submit (при верном заполнении всех полей) появляется ошибка: "Server error".
Думаю, что эти две проблемы связаны, но не могу понять в чем и где я ошиблась.
Посмотреть код и как это работает можно здесь.
Заранее спасибо за помощь.
|
|
13.10.2012, 06:58
|
|
Аспирант
|
|
Регистрация: 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.
|
|
13.10.2012, 10:14
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
NikolasGrad, спасибо за ответ.
Сейчас, конечно, проверка идет по всем ячейкам поля "телефон", но если заполнить хотя бы одну, то скрипт пропустит. А мне нужно, что бы обязательно были первые 4 заполнены, и желательно только цифрами...
А с адресом скрипта вообще беда, я его уже как только не прописывала, все равно ошибка: "Server error". Может дело еще в чем то?
|
|
13.10.2012, 10:22
|
|
Аспирант
|
|
Регистрация: 12.04.2012
Сообщений: 49
|
|
Поменяй условие
if (phone == "") {
на
if (String(phone).length < 11 || isNaN(parseInt(phone))) {
так будет точнее.
Последний раз редактировалось NikolasGrad, 13.10.2012 в 10:30.
|
|
13.10.2012, 10:31
|
|
Аспирант
|
|
Регистрация: 12.04.2012
Сообщений: 49
|
|
А где скрипт находится физически?
Впиши полный url 'http:// и т.д.'
|
|
13.10.2012, 10:43
|
|
Аспирант
|
|
Регистрация: 12.04.2012
Сообщений: 49
|
|
У тебя рнр не работает, я его почти весь вижу.
Скорее всего нет открывающего <?php и закрывающего ?>
Кстати он с ошибками.
Скинь его весь сюда, я поправлю.
|
|
13.10.2012, 11:14
|
Интересующийся
|
|
Регистрация: 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;
?>
|
|
13.10.2012, 11:16
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
Скрипт лежит там же где и index.html
|
|
13.10.2012, 11:39
|
|
Аспирант
|
|
Регистрация: 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.
|
|
13.10.2012, 12:29
|
|
Аспирант
|
|
Регистрация: 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.
|
|
|
|