Javascript.RU

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

Cannot read property 'length' of undefined
Uncaught TypeError: Cannot read property 'length' of undefined
jquery-1.9.1.js
На вот эту строчку библиотеки ругается. length = obj.length,
// args is for internal usage only
       each: function( obj, callback, args ) {
	var value,
		i = 0,
		length = obj.length,
		isArray = isArraylike( obj );



$('#reports').validate({
        errorLabelContainer: 'div.errors',
        errorElement: 'div',
        rules: {
            name: {
                required: true
            },
            text: {
                required: true,
				maxlength: 8000
            },
            keystring: {
                required: true
            }
        },
        messages: {
            name: {
                required: "Вы не ввели имя"
            },
            text: {
                required: "Вы нe ввели вопрос",
				maxlength: "Максимальная длина сообщения 8000 символов"
            },
            keystring: {
                required: "Вы не ввели код, указанный на картинке"
            }
        },
        submitHandler: function(form) {
            var opt = {
                dataType: 'json',
                url: 'core/add_comment_goods.php',
                success: function(data) {
                    if (data.success) {
                        $('body').myAlert({
                            title: 'Отзыв для товара',
                            dialogWidth: 330,
                            dialogHeight: 170,
                            winWidth: 290,
                            timeOut: 2500,
                            text: 'Спасибо за отзыв.'
                        });
                        $('#reports').clearForm();
                        $("#captcha").trigger('click');
                    } else {
                        $('.errors').html('');
                        $.each(data.errors, function(k, i) {
                            $('div.errors').append('<span class="error">' + i + '</span></br>');
                        })
                        $('div.errors').show();
                    }
                }
            };
            $(form).ajaxSubmit(opt);
        }
    });


Вот такой вот код обрабатывающий форму.
Вот такой вот код шаблона.
<div class="es_goods_bottom_reviews" id="tab2">
			{if $aData.comments|@count neq 0}
				{foreach from=$aData.comments item=n key=k name=comments}
					<h4>{$n.name_user}&nbsp;{$n.family_user}</h4>
					<div class="es_goods_bottom_diskr">
						{$n.text_comment}
					</div>
				{/foreach}
				<div class="es_border2"></div>
			{/if}
			<h3>Написать отзыв</h3>
			<table>
			<form method="post" action="#" id="reports">
				<tr>
					<td><span>*</span>Имя</td>
					<td><input type="text" id="name"></td>
				</tr>
				<tr>
					<td>E-mail</td>
					<td><input type="text" id="email"></td>
				</tr>
				<tr>
					<td><span>*</span>Текст</td>
					<td><textarea id="text"></textarea></td>
				</tr>
			</form>
			</table>
			<div class="es_border2"></div>
			<div class="es_row">
				<div class="input">
					<div id="mycaptcha">
						<img title="Нажмите сюда для генерации нового кода" alt="Нажмите сюда для генерации нового кода" src="./kcaptcha/index.php?PHPSESSID=grcehjg6kdukonnu3daet4gmt1" onclick="new_captcha('captcha', 'PHPSESSID', 'grcehjg6kdukonnu3daet4gmt1');" id="captcha" >
						<br>
						<div class="right">
							<label for="keystring"><span class="required">*</span>Введите код</label>
							<input type="text" class="input-text" id="keystring" name="keystring" value="" />
						</div>
						<div class="left">
							Для обновления картинки<br/>
							нажмите на нее
						</div>						
					</div>						
				</div>
				<div class="clear"></div>
			</div>
			<div class="es_border2"></div>
			<div class="es_goods_bottom_reviews_bottom">
				<div class="es_row">
					<span class="required">*</span> — обязательные для заполнения поля
				</div>
				<div class="es_clear"></div>
				<a href="#" id="send" class="es_a_button es_a_button_active es_a_button_active_next" style="float:left">Отправить</a>
			</div>
		</div>

Последний раз редактировалось SpiritAbsolute, 31.12.2013 в 10:04.
Ответить с цитированием
  #2 (permalink)  
Старый 31.12.2013, 10:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А что отвечает core/add_comment_goods.php на запрос?
Ошибка то из-за того что data.errors не определено. Смотри в отладчике, вкладка Сеть либо сделай console.log(data) или поставь точку останова.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 31.12.2013, 10:47
Интересующийся
Отправить личное сообщение для SpiritAbsolute Посмотреть профиль Найти все сообщения от SpiritAbsolute
 
Регистрация: 11.12.2013
Сообщений: 19

core/add_comment_goods.php отвечает:
error: "Произошла ошибка. Попробуйте перезагрузить страницу"
success: false
то есть получается выборки в классе не происходит id_goods нету...
$row = $this->dbh->query("SELECT COUNT(*) FROM shop_goods WHERE id_goods = '$id_goods'")->fetchColumn();

но причем тут javascript и эта ошибка не могу понять...

Последний раз редактировалось SpiritAbsolute, 31.12.2013 в 10:50.
Ответить с цитированием
  #4 (permalink)  
Старый 31.12.2013, 11:00
Интересующийся
Отправить личное сообщение для SpiritAbsolute Посмотреть профиль Найти все сообщения от SpiritAbsolute
 
Регистрация: 11.12.2013
Сообщений: 19

id_goods равен нулю, он его не получает... пробую исправить.
Ответить с цитированием
  #5 (permalink)  
Старый 31.12.2013, 11:39
Интересующийся
Отправить личное сообщение для SpiritAbsolute Посмотреть профиль Найти все сообщения от SpiritAbsolute
 
Регистрация: 11.12.2013
Сообщений: 19

Проблема решена добавлением в шаблон этого айдишника, и далее еще несколько правок и добавлений методов и все работает! : ) Но ошибка кстати осталась javascript.
<input type="hidden" name="id_goods" value="{$aData.id_goods}">

Но ошибка кстати осталась javascript. Пока что она не критична, но все равно хочется узнать причину...

Последний раз редактировалось SpiritAbsolute, 31.12.2013 в 11:46.
Ответить с цитированием
  #6 (permalink)  
Старый 31.12.2013, 12:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от SpiritAbsolute
все равно хочется узнать причину
Я ведь уже объяснил - data.errors не существует. То есть ты вместо массива передаешь undefined - вот и ошибка.
У тебя в коде предполагается что если data.success = false, то обязательно должны быть data.errors = [__массив__]
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cannot read property 'items' of undefined vikvikst474 ExtJS 2 09.01.2013 15:32
Ошибка Uncaught TypeError: Cannot read property 'elements' of undefined Allality Общие вопросы Javascript 14 29.07.2012 18:35
Ext.data.Record.create - Uncaught TypeError: Cannot read property 'items' of undefine potkin ExtJS 2 01.07.2012 23:29
Cannot read property 'items' of undefined khusamov ExtJS 0 11.05.2012 04:33
JavaScript error: Cannot read property 'style' of null mainne Javascript под браузер 4 03.03.2012 17:15