За последние 24 часа нас посетили 17410 программистов и 1711 роботов. Сейчас ищут 1565 программистов ...

Еще одна тема про js, php и ajax

Тема в разделе "JavaScript и AJAX", создана пользователем ExTerZyyy, 23 авг 2016.

  1. ExTerZyyy

    ExTerZyyy Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    4
    Симпатии:
    0
    Доброго времени суток дамы и господа, второй день не могу справиться, может глаз уже замылился или я чегото не понимаю, есть следующий код HTML:

    Код (Javascript):
    1. function go_to(driver, id){
    2. //alert(driver);
    3. $.ajax({
    4.   type: "POST",
    5.   url: "update.php",
    6.   data: { driver: driver, id: id }
    7. }).done(function( msg ) {
    8.   alert( "Data Saved: " + msg );
    9. });
    10.  
    11. }
    переменные driver и id передаются в функцию, но почемуто не передаются в update.php

    Код update.php:
    PHP:
    1. <?php
    2. include("bd.php");
    3. header('Content-Type: text/html; charset=utf-8');
    4. $driver = $_POST['driver'];
    5. $id = $_POST['id'];
    6. $query1= "UPDATE orders SET driver=$driver where N=$id";
    7. ?>
    Илиже я чегото не понимаю в колбасных обрезках, подскажите пожалуйста...
     
    #1 ExTerZyyy, 23 авг 2016
    Последнее редактирование модератором: 24 авг 2016
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Интересно, как вы это определили? И что показывает консоль? Если путь к обработчику указан верно, то данные дойдут стопроцентно.
    --- Добавлено ---
    А какой результат вы хотели получить в предпоследней строке "update.php"?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    url: "update.php"

    сам скрипт где лежит? слеш допиши /update.php, указывая путь от корня сайта

    Код (Javascript):
    1. .done(function() {
    2.     alert( "Гуд" );
    3.   })
    4.   .fail(function() {
    5.     alert( "404" );
    6.   });
     
  5. ExTerZyyy

    ExTerZyyy Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    4
    Симпатии:
    0
    Если бы данные доходили то должен был бы пройти апдейт базы данных, но этого не произошло, пробовал даже писать

    PHP:
    1. $query1="UPDATE orders SET driver='1'";
    но всеравно никаких изменений в бд.
    --- Добавлено ---
    в тойже папке что и страница с которой он вызывается.
     
  6. ExTerZyyy

    ExTerZyyy Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    4
    Симпатии:
    0
    функция вызывается событием клика, пременные в нее передаются, проверено alert, вроде как и функция аякс выполняется, потомучто alert("Гуд"); срабатывает, но база не обновляется.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Предложение посмотреть, что происходит в консоли браузера, упорно игнорируется? Вы там увидите либо ответ сервера с 404 ошибкой, либо с 500. В первом случае - если криво прописали путь к файлу, во втором - если на сервере происходит ошибка.
    Отладка связки AJAX+PHP не самая приятная вещь, да. Так что консоль и трассировка запросов - ваши верные друзья.
    Заодно, подключите отладчик к серверсайду, чтобы перехватывать вызовы уже там.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Нууу.. Смикаешь проблему?
    --- Добавлено ---
    Не раз прислушиваясь к совету "долой отладчики"
    У вас всегда есть под рукой
    Ajax
    Код (Text):
    1. done( function( content )
    2. {
    3.       console.log( content  );
    PHP
    Код (Text):
    1. ini_set ( 'display_errors', 1 );
    2. error_reporting ( E_ALL );
    3. ini_set ( 'html_errors', FALSE );
    За глаза хватит.
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @ExTerZyyy, я вас спрашивал про эту строку
    PHP:
    1. <?php
    2. $query1= "UPDATE orders SET driver=$driver where N=$id";
    Ответ не получил, поэтому повторюсь уже без намёков. Вы присвоили переменной $query1 строку с запросом, но я не вижу, чтобы вы этот запрос где-нибудь выполнили.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Это очень плохой совет, я бы даже сказал - крайне вредный. Вреднейший. И дают такие советы те, кто не могут отладчик поставить, либо понятия не имеют что это такое и зачем он нужен. Отладка через выплевывание на страницу - это ппц. Крайне медленное решение. Без трассировки, брейкпоинтов, стэктрейса, без эспрешнов, овервотча и просмотра переменных в рилтайме. Ты попробуй настоящую отладку, а не этот онанизм, за уши потом не оттянешь. Даже на стороне JS в браузере есть встроенный отладчик, карл. Со всеми вышеперечисленными богатствами.
     
    vayas нравится это.
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    У каждого свои взгляды, кто может тот и обходится без сторонней помощи. Тем более на данной проблеме, отладчик ставить, логика.. и Будут не только с самим кодом проблемы но и с
     
  12. ExTerZyyy

    ExTerZyyy Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    4
    Симпатии:
    0
    Спасибо, как и думал я просто тупанул, запрос сформировал но не выполнил. Если вдруг кому пригодится:
    JS:

    Код (Javascript):
    1. function go_to(driver, id){
    2. //alert(driver);
    3. $.ajax({
    4. type: "POST",
    5. url: "updatedriver.php",
    6. data: { driver: driver, id: id }
    7. })
    8. .done(function() {
    9. alert( "Гуд" );
    10. })
    11. .fail(function() {
    12. alert( "404" );
    13. });
    14. };
    PHP:

    PHP:
    1. <?php
    2.  
    3. include("bd.php");
    4.  
    5. header('Content-Type: text/html; charset=utf-8');
    6.  
    7. $driver = $_POST['driver'];
    8. $id = $_POST['id'];
    9. mysql_query("UPDATE orders SET driver='$driver' WHERE N='$id'");
    10.  
    11. ?>
    Спасибо всем что откликнулись, как говориться со стороны бывает виднее, вроде проблема оказалась тревиальна а посмотреть на нее можно с разных сторон.
     
    #12 ExTerZyyy, 24 авг 2016
    Последнее редактирование модератором: 25 авг 2016
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    mysql устарел, используй mysqli, (..*i) или вовсе PDO на будущее + экранируй входящую инфу в запрос
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @MAN_IFE_ST
    вкладка запросов очень помогает. Могу научить.
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Ты о чем?
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дебаг.
    --- Добавлено ---
    про это я. Эта панель очень удобная. Очень.
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Это я понял что удобно. Но по скорости из - за одного кривого ajax синтаксиса или пхпи идти ставить панельку. Да и вовсе по мне мне console по счастью хватает. Две строчки оп, и посмотрел в DOM console.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты не ставиш панельку. Ты просто кликаешь правой кнопкой где угодно и выбираешь Inspert Element или просто жмёшь F12

    И всё. И тебе даже не нужно искать это место в коде. Ничего не нужно. Все запросы видны через секунду. Полюбас это проще, чем что либо ещё. И полезнее.
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    окай
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ты меня огорчаешь. В любом. Даже не так. В ЛЮБОМ НОРМАЛЬНОМ языке программирования предусмотрены инструменты для отладки полноценной. Даже в браузере инструмент отладки позволяет трейсить JS. Даже в сраном-пыльном QBasic, под DOS еще, были брейкпоинты и построчная трассировка с провалами во внутрь вызова по стектрейсу. КАРЛ, даже в QBasic!!! Чего уж говорить о всяких плюсах, шарпах, явах и тд. Просто там отладчики типа всяких GDB, из-за специфики среды выполнения, поставляются сразу с IDE. С PHP в этом плане чуть сложнее - отладчик нужно ставить самому и указать IDE, где он находится, и на каком порту его слушать. 5 минут времени потратить по мануалу. Это не "сторонняя помощь", это необходимость. Гордиться тем, что кодишь без отладки - все равно что, будучи инвалидом, гордиться тем, что у тебя нет рук и тебе приходится держать ложку ногой, при том, что тебе предложили бесплатно киберпротезы. Нет! Мне не нужна эта ваша сторонняя помощь! Я лучше буду корячиться и есть ногами!

    Логика в том, что это делается один раз. И на всю жизнь. И решает все проблемы.

    Никаких проблем не будет. Просто ты не понимаешь, что это и для чего, потому что ни на чем кроме пхп не кодил, считай, ничего слаще морковки не ел. Не понимаешь что это и, как следствие, боишься то, чего не понимаешь, и, как следствие, дистанцируешься от того, чего боишься.

    А зря
     
  21. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Много пиара и эмоций. Муху дуть не стоит. Из - за одного вывода TRUE / FALSE будем ставить целую систему?
    Смотри я тебе пример приведу - тоесть я эту отладочную систему нихрена не знаю и хз что она из себя представляет. Тобишь мне надо идти рыскать, что это такое и как установить, нежели прописав
    Код (Javascript):
    1. done( function( content )
    2. {
    3.       console.log( content  );
    ага, допустим JSON нужно было мне выводить но там html с ошибкой. Окай понял в чем ошибка - исправил. В тем временем как читаю мануал по установки отладки. И вас двоих не поймешь:
    Как ваша отладка поможет данному ТСу ? если ajax гуд, php гуд. Ошибок по фикусу нон стоп тютю. P.s: где костыли ?
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    короче я тож за отладку =)
    --- Добавлено ---
    как раз пошаговой отладкой это и решается. Те же вебворкеры вообще не существуют во вкладке вообще, а выполняются в отдельном потоке. Ты же не будешь лишать себя такой радости, как вебворкеры, правда? :D
     
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    толку объяснять...
     
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ты один раз потратишь 5 минут на настройку XDEBUG, и он, в итоге, в будущем, будет тебе экономить процентов 80 времени отладки от того, какое ты тратишь сейчас. Тебе жалко сейчас 5 минут, но тебе не жалко тратить час на отладку там, где с дебаггером можно управиться за 10 минут? И при этом говоришь, что у нас с логикой что-то не так?

    Ты бы вместо того, чтобы упираться, разобрался в теме, почитал, что да как. Кодить без отладчика - это не повод для гордости. Никто это не оценит. А времени тратится прорва. Если хочешь, я тебе видосик запишу, покажу, как это работает.

    И да - а ты на JS кодишь? Там отладку делаешь тоже только через выброс в консоль, при том, что в браузере есть дебаггер полноценный с экспрешнами, вотчами и прочей обвязкой?
    --- Добавлено ---
    Да, сама "установка целой системы" - это строчка в линуксовой консоли, или еще проще - в менеджере приложений в поиск вбить xdebug и кликнуть "установить". Куда проще-то? А потом в настройках IDE прописать пару циферок по мануалу.
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @Fell-x27 а просто так запиши покажи