Не работает форма для сбора информации на jquery
Описание:
На сайте есть ссылка для скачивания файла, при нажатии на нее сначала появляется pop-up окно с предложением ввести инфомацию о себе. После отправки информации на сервер файл скачивается, появляется окно с благодарностью. Собственно проблема (вернее даже две): 1) Поле "телефон" разбито на 5 ячеек, первые 4 обязательные для ввода, последняя простая. Мне нужно, что бы при проверки корректности введенных данных подсвечивались все 5 ячеек поля, но выводилось только одно сообщение об ошибке (а не на каждую). Сейчас вроде все так и есть, но проверяется на корректность только первая ячейка. 2) При нажатии на submit (при верном заполнении всех полей) появляется ошибка: "Server error". Думаю, что эти две проблемы связаны, но не могу понять в чем и где я ошиблась. Посмотреть код и как это работает можно здесь. Заранее спасибо за помощь. |
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, спасибо за ответ.
Сейчас, конечно, проверка идет по всем ячейкам поля "телефон", но если заполнить хотя бы одну, то скрипт пропустит. А мне нужно, что бы обязательно были первые 4 заполнены, и желательно только цифрами... А с адресом скрипта вообще беда, я его уже как только не прописывала, все равно ошибка: "Server error". Может дело еще в чем то? |
Поменяй условие
if (phone == "") { на if (String(phone).length < 11 || isNaN(parseInt(phone))) { так будет точнее. |
А где скрипт находится физически?
Впиши полный url 'http:// и т.д.' |
У тебя рнр не работает, я его почти весь вижу.
Скорее всего нет открывающего <?php и закрывающего ?> Кстати он с ошибками. Скинь его весь сюда, я поправлю. |
<?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; ?> |
Скрипт лежит там же где и index.html
|
<?php // Начало файла include ('/home/cp339125/путь к файлу с библиотекой'); /** файл с библиотекой * где функции getGeoData(), sendSalesForce(), logDebug() * где $sales_force_oid, $debug, $admin_email, $client_ip * без него работать не будет */ ?> |
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; ?> |
require_once('/home/cp339125/public_html/public_htmls/../configs/config.php') замени на require_once('/home/cp339125/public_html/public_htmls/configs/config.php') |
Часовой пояс GMT +3, время: 06:00. |