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} {$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> |
А что отвечает core/add_comment_goods.php на запрос?
Ошибка то из-за того что data.errors не определено. Смотри в отладчике, вкладка Сеть либо сделай console.log(data) или поставь точку останова. |
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 и эта ошибка не могу понять... |
id_goods равен нулю, он его не получает... пробую исправить.
|
Проблема решена добавлением в шаблон этого айдишника, и далее еще несколько правок и добавлений методов и все работает! : ) Но ошибка кстати осталась javascript.
<input type="hidden" name="id_goods" value="{$aData.id_goods}"> Но ошибка кстати осталась javascript. Пока что она не критична, но все равно хочется узнать причину... |
Цитата:
У тебя в коде предполагается что если data.success = false, то обязательно должны быть data.errors = [__массив__] |
Часовой пояс GMT +3, время: 22:16. |