Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
1

Json (TypeError: undefined is not a function)

10.07.2014, 11:29. Показов 3147. Ответов 12
Метки нет (Все метки)

Решил ознакомиться с json, с передачей данных с яваскрипта в пхп.
Делал по данному мануалу:
http://www.simplecoding.org/ot... query.html


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
var massiv ={
          "fio":fio,"name":name, "rekvisiti":rekvisiti, "work":work, "cost":cost, "date":date, "text":text, "original_text":original_text, "wishes_text":wishes_text,
              "description": description, "mail":mail, "phone":phone, "yes":yes,  "arr":arr
      };
 
      $.ajax({
          url:'functions.php'
          , type:'POST'
          , data:'jsonData=' + $.toJSON(massiv)
          , success: function(res) {
              alert(res);
          }
      });
Однако в консоли хрома выходит вот такая ошибка
TypeError: undefined is not a function
Не могу понять в чем проблема.
Если отдельно то массив прекрасно конвертируется в json строку.
Проблема связана с аджаксом - дальше не ушел.

Добавлено через 6 минут
Так и не понял для чего
Javascript
1
2
 success: function(res) {
              alert(res);
Убирал их никаких изменений - та же ошибка.

Добавлено через 16 секунд
Так и не понял для чего
Javascript
1
2
 success: function(res) {
              alert(res);
Убирал их никаких изменений - та же ошибка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2014, 11:29
Ответы с готовыми решениями:

TypeError: document.getElementsByName(...)[0] is undefined
Всем привет, подскажите пожалуйста в чем ошибка, нужно забивать данные пользователя на N ресурсах,...

Uncaught TypeError: $ is not a function
решил проверить скрипт одной баннерной сети, но столкнулся с проблемой так-как баннер не...

TypeError: Cannot read property 'constructor' of undefined
function Range(from, to) { this.from = from; this.to = to; } Range.prototype.equals =...

Uncaught TypeError: Cannot read property 'value' of undefined
Не могу понять в чем проблема выдает ошибку Uncaught TypeError: Cannot read property 'value' of...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на JavaScript‌
Обучение в Java Mentor с оплатой после трудоустройства
12
665 / 636 / 335
Регистрация: 26.04.2014
Сообщений: 2,114
10.07.2014, 12:10 2
Ты библиотеку jQuery подключил?

Добавлено через 1 минуту
HTML5
1
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
0
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
10.07.2014, 13:16  [ТС] 3
Да несколько раз проверял, все как в мануале, проект его скачал и библиотеки добавил.

Добавлено через 1 час 2 минуты
В файле functions.php

PHP
1
2
3
4
5
6
$data = json_decode($_POST['jsonData']);
$response = 'Получено параметров '.count($data).'\n';
foreach ($data as $key=>$value) {
    $response .= 'Параметр: '.$key.'; Значение: '.$value.'\n';
}
echo $response;
0
665 / 636 / 335
Регистрация: 26.04.2014
Сообщений: 2,114
10.07.2014, 13:31 4
Я скачал, запустил и всё работает. Ошибок нет. Не знаю что там у вас...
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
10.07.2014, 14:09 5
Цитата Сообщение от votanko Посмотреть сообщение
Так и не понял для чего
Код JavaScript
1
2
*success: function(res) {
* * * * * * * alert(res);
Это функция, которая выполняется в случае удачной отправки данных и удачного ответа.
Параметр res это то, что отправляет сервер в ответ.
Ошибка означает, что функция не определена. Посмотри в хроме в консоли должна писаться строка, которая вызвала исключение. От этого уже можешь плясать
0
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
10.07.2014, 14:39  [ТС] 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
 $.ajax({
          url:'functions.php'
          , type:'POST'
          , data:'jsonData=' + $.toJSON(massiv)
 
Uncaught TypeError: undefined is not a function 
 
          , success: function(response) {
              alert(response);
          }
      });
Между строками показывает.

Добавлено через 10 минут
Javascript
1
  , data:'jsonData=' + $.toJSON(massiv)
Почему то на эту строку ругается.
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
10.07.2014, 14:43 7
votanko, вообщем преобразуй объекты в JSON строку вот так вот

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var massiv ={
    "fio":fio,
    "name":name, 
    "rekvisiti":rekvisiti,
    "work":work, 
    "cost":cost,
    "date":date, 
    "text":text,
    "original_text":original_text, 
    "wishes_text":wishes_text,
    "description": description, 
    "mail":mail, 
    "phone":phone, 
    "yes":yes,  
    "arr":arr
};
 
var data = "jsonData=" + JSON.stringify(massiv);
/* 
Как я понял toJSON - это метод у типа Date, и к объектом он не подходит. 
Можно переопределить, но зачем?
Так что используй JSON.stringify(obj);
*/
Для использования $.JSON нужно дополнение, как я понял : http://jquery.page2page.ru/ind... D0%B2_JSON вот тут инфа
1
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
11.07.2014, 07:23  [ТС] 8
ок попробую, спс.

Добавлено через 16 часов 26 минут
Зараза

Javascript
1
2
3
4
5
6
7
8
$.ajax({
          url:'engine/functions.php'
          , type:'POST'
          , data:'jsonData=' + JSON.stringify(massiv)
    //      , success: function(response) {
       //       alert(response);
      //    }
      });
Так все работает идеально.
А захотел передать в др файл.
Javascript
1
2
3
4
5
6
7
8
$.ajax({
          url:'engine/otchet.php'
          , type:'POST'
          , data:'jsonData1=' + JSON.stringify(massiv)
          //      , success: function(response) {
          //       alert(response);
          //    }
      });
Говорит ошибку.
POST http://localhost/cms/engine/otchet.php 500 (Internal Server Error)
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
11.07.2014, 08:25 9
votanko,
Наиболее частой причиной ошибки 500 (Internal Server Error, внутренняя ошибка сервера) является неверный синтаксис файла .htaccess или наличие в нем неподдерживаемых директив. Чаще всего достаточно закомментировать директиву Options (для этого нужно поставить в начале строки решетку — #), и проблема исчезнет.

Отсюда взял : https://faq.jino.ru/faq/proble... #error-500
0
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
11.07.2014, 09:00  [ТС] 10
Не нашел у себя этот файл.
с файлом functions все работает, но добавил в него добавление в значений массива в таблицу mysql та же ошибка вылетает.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$data = json_decode($_POST['jsonData']);
$response = 'Получено параметров '.count($data).'\n';
foreach ($data as $key=>$value) {
    $response .= 'Параметр: '.$key.'; Значение: '.$value.'\n';
}
 
 
 
$result_add = mysql_query ("INSERT INTO tickets (fio, name_organization, requisites, type, price, date,text, original_text,wishes_text,substrate,mail,phone)
                             VALUES ('$data[0]', '$data[1]','$data[2]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]',
                             '$data[11]','$data[12]',");
echo $response;
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
11.07.2014, 09:15 11
votanko, используй PDO/Mysqli, это раз. Во вторых, лучше как-то обособиться от
Цитата Сообщение от votanko Посмотреть сообщение
mysql_query ("INSERT INTO tickets (fio, name_organization, requisites, type, price, date,text, original_text,wishes_text,substrate,mail,phone)
* * * * * * * * * * * * * * VALUES ('$data[0]', '$data[1]','$data[2]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]',
* * * * * * * * * * * * * * '$data[11]','$data[12]',");
Ибо тут фиксированное количество элементов массива. А если элементов будет больше/меньше.
Как вариант, попробуй для начала, заносить только один параметр в бд. Если все работает, попробуй два, и так далее пока не будет ошибки. Не силен в php, но как вариант проверь синтаксис этого куска. Ибо если без него работает, то скорее всего косяк в нем
1
0 / 0 / 2
Регистрация: 18.11.2012
Сообщений: 76
11.07.2014, 10:53  [ТС] 12
Сделал 2 значения , ошибки не выдает но и в базу инфу не кидает
PHP
1
$result_add = mysql_query ("INSERT INTO tickets (fio,text) VALUES ('asdasd','asdasdasd')");
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
11.07.2014, 11:02 13
votanko, http://php.net/manual/ru/book.mysqli.php начни читать с этого. Сейчас идет переход на MySQLI или на PDO (http://php.net/manual/ru/book.pdo.php)
Начни изучать их, ибо скоро все старое будет просто не поддерживаться. Возможно у тебя проблема с подключением к бд. ( не увидел у тебя строки, где ты подключаешься к бд)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2014, 11:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

TypeError: Cannot read property 'length' of undefined
подскажите пожалуйста что тут не так и как исправить? почему такая ошибка TypeError: Cannot read...

Uncaught TypeError: Cannot read property 'elements' of undefined
Только начал изучать и сразу тормоз... оШИБКА: Uncaught TypeError: Cannot read property 'elements'...

Uncaught TypeError: Cannot read property 'createRange' of undefined
Вроде б все просто, но не работает function AddTags(Tag,Tag2) { document.forma.content.focus();...

Не работает код: TypeError: Cannot set property 'x' of undefined
в общем говоря вот код ошибок как логических так и синтаксических может быть многоfunction (keys,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.