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

Создание Ajax запроса через ссылку

Тема в разделе "JavaScript и AJAX", создана пользователем igroc, 15 июл 2014.

  1. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кавычка закрылась
     
  2. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    какая кавычка не понял

    вот код
    Код (Text):
    1.  
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>Cool page site</title>
    6. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><!-- Библиотека jQuery -->
    7. <script src="js/script.js"></script><!-- Наш JS-код -->
    8. </head>
    9. <body>
    10.  
    11.  
    12. <!-- <a href="#" onclick="$.ajax({type: 'POST', url: 'handler.php', data: 'data1=1&data2=2&data3=3', success: function(data){ $('#results').html(data);}});">Отправить</a> -->
    13.  
    14.  
    15.  
    16. <a href="#" onclick="$.ajax({type: 'POST', url: 'handler.php', data: 'data1=1&data2=2&data3=3', success: function(data){ $('#results').html(data);}});">Отправить</a>
    17.  
    18.  
    19.  
    20. <div id="results">000</div>
    21.  
    22. </body>
    23. </html>
    24.  
    25. <?
    26.  
    27. echo '<a href="#"
    28. onclick="
    29. $.ajax
    30. ({
    31. type: "POST",
    32. url: "handler.php",
    33. data: "data1=1&data2=2&data3=3",
    34. success: "function(data){$('#results').html(data)};
    35. })
    36. ">Отправить</a>';
    37.  
    38.  
    39.  
    40. ?>
    верхняя ссылка работает нижняя нет
     
  3. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    onclick="
    $.ajax
    ({
    type: "POST",
    Вот уже перед словом POST обработчик закончился. Потому что кавычка закрылась. Экранируйте кавычки:
    onclick="
    $.ajax
    ({
    type: \"POST\",
    и в остальных местах тоже
     
  4. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    Код (PHP):
    1. echo '
    2. <a href="#" 
    3. onclick="
    4. $.ajax
    5. ({
    6. type: \"POST\", 
    7. url: \"handler.php\",
    8. data: \"data1=1&data2=2&data3=3\", 
    9. success: \"function(data){$('#results').html(data)}\";
    10. })"
    11. >Отправить</a>';
    поправил так не работает
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    вот

    И, раз уж пошла такая пьянка
    Код (Text):
    1. <a href="#" id="my-link">click me</a>
    и где-то перед </body> или вообще в отдеьном js скрипте
    Код (Text):
    1.     $(function() {
    2.         $('#my-link').click(function() {
    3.             $.post("/handler.php", {data1: 1, data2: 2, data3: 3})
    4.                     .done(function(data) {
    5.                         $("#results").html(data);
    6.                     });
    7.         });
    8.     });
     
  6. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1

    может быть я и согласен не пойдет

    мой полный код меню
    Код (PHP):
    1. $page_name=$_POST['razdel'];
    2.  
    3.  
    4. echo '<ul id="files">';
    5. //$res=mysql_query("SELECT DISTINCT razdel FROM tovar WHERE code LIKE '".$code5."'");
    6. $res=mysql_query("SELECT DISTINCT razdel FROM tovar WHERE code LIKE '".$code5."%'");
    7.  
    8. //$res=mysql_query("SELECT DISTINCT razdel FROM tovar");
    9. while($row = mysql_fetch_array( $res))
    10. {echo '<li>[url="#0"]'.$row['razdel'].'[/url]<ul>';
    11.  
    12. $res1=mysql_query("SELECT DISTINCT podrazdel FROM tovar WHERE razdel LIKE '".$row['razdel']."'");
    13. while($row1 = mysql_fetch_array( $res1))
    14. //{echo '<li>[url="?razdel='.$row['razdel']."]'.$row1['podrazdel'].'[/url]</li>';}
    15. //{echo '<li>[url="#"]'.$row1['podrazdel'].'[/url]</li>';}
    16.  
    17.  
    18.  
    19.  
    20.  
    21. {echo '<a href="#"
    22. onclick="
    23. $.ajax
    24. ({
    25. type: "POST", url: "rez.php",
    26.  data: "data1=1&data2=2&data3=3",
    27.  success: "function(data){.$('#results')..html(data);}"});">'.$row1['podrazdel'].'</a></li>';}
    28.  
    29.  
    30.  
    31.  
    32.  
    33.  
    34.  
    35. echo '</ul>  </li>';}
    36. echo '</ul>';
    37.  
    38.  
    39.  
    40. } 
    там ссылки из базы данных получаются (это меню)
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    согласен, удручающее зрелище. Могу только посоветовать переписать меню. Благо это не сложно.

    в прошлом посте я в цитате выделил тебе проблемные кавычки. Так сложно посмотреть?
     
  8. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Да даже тут автоподсветка кода выделяет, где кончилась строка.
     
  9. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    Всем спасибо все получилось

    Если кому то надо

    Код (Text):
    1. echo "
    2. <a href='#'" ;
    3.  
    4. echo "
    5. onclick=\"
    6. $.ajax
    7. ({
    8. type: 'POST',
    9.  url: 'handler.php',
    10.  data: 'data1=6&data2=2&data3=3',
    11.  success: function(data){ $('#results').html(data)}
    12.  });\"
    13.  >Отправить</a>";
    так работает

    Вопрос считаю закрытым
     
  10. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Я бы на вашем месте вообще закрыл на этом месте блок php и сделал сырой вывод. Это вообще хорошая практика в местах, где друг на друга наслаивается куча кавычек.
    Код (Text):
    1.  
    2. ?>
    3. <a href='#' onclick="$.ajax
    4. ({
    5. type: 'POST',
    6.  url: 'handler.php',
    7.  data: 'data1=6&data2=2&data3=3',
    8.  success: function(data){ $('#results').html(data)}
    9.  });" >Отправить</a>
    10. <?
    Или, что даже лучше, сделать, как Luge предложил: http://php.ru/forum/viewtopic.php?f=16&t=49208#p391185
     
  11. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    мой весь код на данный момент
    Код (Text):
    1. <html>
    2.     <head>
    3.         <script type="text/javascript" src="js/enhance.js"></script>       
    4.         <script type="text/javascript">
    5.             // Запуск теста на поддержку браузером скриптов
    6.             enhance({
    7.                 loadScripts: [
    8.                     '../js/jquery.min.js',
    9.                     '../js/jQuery.tree.js',
    10.                     '../js/example.js'
    11.                 ],
    12.                 loadStyles: ['../css/enhanced.css'],
    13.                 forcePassText: ['Посмотреть с подключенными скриптами'],
    14.                 forceFailText: ['Посмотреть с выключенными скриптами']
    15.             });  
    16.         </script>      
    17.        
    18.        
    19.        
    20.        
    21. </head>
    22. </html>
    23.  
    24.  
    25. <?
    26. $host='localhost'; // имя хоста (уточняется у провайдера)
    27. $database='baza'; // имя базы данных, которую вы должны создать
    28. $user='root'; // заданное вами имя пользователя, либо определенное провайдером
    29. $pswd=''; // заданный вами пароль
    30.  
    31. // подключаемся к MySQL
    32. $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
    33. mysql_select_db($database) or die("Не могу подключиться к базе.");
    34.  
    35.  
    36.  
    37.  
    38.  
    39.  
    40.  
    41. function is_sel($a, $field)
    42. {
    43.   $b = isset($_POST[$field])?$_POST[$field]:NULL;
    44.   if($a == $b) return 'selected="selected"';
    45. }
    46.  
    47. ?>
    48.  
    49. <table style="width: 900px;" border="1" align="center" bgcolor="#FFFFFF" bordercolor="#006699">
    50. <tbody>
    51. <tr>
    52. <td colspan="3" align="left">
    53.  
    54.  
    55. <?
    56.  
    57.  
    58.  
    59.  
    60. // выбор области
    61. $res = mysql_query("SELECT * FROM kladr WHERE code LIKE '__00000000000'");
    62. ?>
    63. <form id="frm" method="post">
    64. <select name="obl" onchange="document.getElementById('frm').submit()" >
    65. <option value='0'>- Выберите область -</option>\r\n";
    66. <?
    67.     while($row = mysql_fetch_array($res))
    68.       echo "<option ".is_sel($row['code'],'obl')." value='" . $row['code'] . "'>" . $row['name'] . " ".$row['socr']. "</option>\r\n";
    69.       echo "</select>";
    70. $code2 = (mysql_real_escape_string($_POST['obl']));
    71. $code1 =$code2/100000000000;
    72.  
    73.  
    74. // выбор города
    75.   $res=mysql_query("SELECT * FROM kladr WHERE code NOT LIKE '".$code2."' AND code LIKE  '".$code1."______00000' ");
    76.   if(mysql_num_rows($res)){
    77. ?>
    78. <select name="gorod" onchange=" document.getElementById('frm').submit();" >
    79. <option  code="gorod" value='0'>- Выберите город -</option>\r\n";
    80. <?
    81.     while($row = mysql_fetch_array($res))
    82.       echo "<option ".is_sel($row['code'],'gorod')." value='" . $row['code'] . "'>" . $row['name'] . " ".$row['socr']. "</option>\r\n";
    83.   echo "</select>";
    84.   $code3 = (mysql_real_escape_string($_POST['gorod']));
    85.   $code1 = (mysql_real_escape_string($_POST['gorod']))/100000;
    86.  
    87.  
    88.   // выбираю район
    89.   $res=mysql_query("SELECT * FROM kladr WHERE code NOT LIKE '".$code3."' AND code LIKE '".$code1."_____'");
    90.  if(mysql_num_rows($res)){
    91. ?>
    92. <select  name="raion" onchange="document.getElementById('frm').submit()" >
    93. <option  code="raion" value='0'>- Выберите район -</option>\r\n";
    94. <?
    95.     while($row = mysql_fetch_array($res))
    96.       echo "<option ".is_sel($row['code'],'raion')." value='" . $row['code'] . "'>" . $row['name'] . " ".$row['socr']. "</option>\r\n";
    97.   echo "</select>";
    98.    $code4 = (mysql_real_escape_string($_POST['raion']));
    99.  
    100. }}
    101. ?>
    102.  
    103. <form action="index.php" method="post">
    104. <input type="submit" name="button" value=" Выбрать" />
    105. </form>
    106.  
    107. <?
    108. if (isset($_POST['button'])) {
    109. $row1 = mysql_fetch_array(mysql_query("SELECT * FROM kladr WHERE code LIKE '".$code2."'"));
    110. $row2 = mysql_fetch_array(mysql_query("SELECT * FROM kladr WHERE code LIKE '".$code3."'"));
    111. $row3 = mysql_fetch_array(mysql_query("SELECT * FROM kladr WHERE code LIKE '".$code4."'"));
    112. echo "<center>"; echo $row1['name']. " ".$row1['socr'];echo " ";
    113. echo $row2['name']. " ".$row2['socr'];echo " ";
    114. echo $row3['name']. " ".$row3['socr'];echo " </center>";
    115.  
    116.  
    117.  
    118.  
    119.  
    120.  
    121.  
    122.  
    123.  
    124.  
    125.  
    126.  
    127. if ($code2>0){$code5=$code2/100000000000;}
    128. if ($code3>0){$code5=$code3/100000;}
    129. if ($code4>0){$code5=$code4;}
    130.  
    131.  
    132.  
    133. ?>
    134. </td></td></tr><tr><td width="10" align="left" valign="top";>
    135.  
    136. <?
    137.  
    138. // меню
    139.  
    140.  
    141. echo '<ul id="files">';
    142. $res=mysql_query("SELECT DISTINCT razdel FROM tovar WHERE code LIKE '".$code5."%'");
    143.  
    144. while($row = mysql_fetch_array( $res))
    145. {echo '<li><a href="#0">'.$row['razdel'].'</a><ul>';
    146.  
    147. $res1=mysql_query("SELECT DISTINCT podrazdel FROM tovar WHERE razdel LIKE '".$row['razdel']."'");
    148. while($row1 = mysql_fetch_array( $res1))
    149. {
    150. $d1 = $row['razdel'];
    151. $d2 = $row1['podrazdel'];
    152. $d3 = $code5;
    153. echo "<a href='#'"; echo "onclick=\"$.ajax({type: 'POST', url: 'rez.php', data: 'data1=$d1&data2=$d2&data3=$d3', success: function(data){ $('#results').html(data)}});\"; >$d2</a>";
    154. }
    155. echo '</ul>  </li>';}
    156. echo '</ul>';
    157. }
    158.  
    159.  
    160.  
    161. ?>
    162.  
    163.  
    164.  
    165.  
    166. <br /></td>
    167. <td align="left" valign="top"><div id='results'></div></strong></td>
    168. </tr>
    169.  
    170.  
    171.  
    172.  
    173.  
    174.  
    175.  
    176.  
    177. </tbody>
    178. </table>
    а ты пишешь закрыть и прочее
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кошмар.
    Хочешь, вынесем в отдельную тему а ребята тебе объяснят что не так?
     
  13. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    давай вынесем
     
  14. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    Помогите еще с одной ссылкой


    echo'
    <a href="../rez/delete.php" onclick="$.ajax({type: "POST", url: "../rez/delete.php", data: "id='.$rows["id"].'"});">0</a>
    '
    должна удалять строчку из таблицы созданной php

    Добавлено спустя 14 минут 24 секунды:
    Помогите еще с одной ссылкой


    echo'
    <a href="../rez/delete.php" onclick="$.ajax({type: "POST", url: "../rez/delete.php", data: "id='.$rows["id"].'"});">0</a>
    '
    должна удалять строчку из таблицы созданной php
     
  15. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Написать за вас обработчик или что сделать?

    1. Вынесите код из тега html в нормальный js-скрипт. Чтобы разработчик которому после вас придётся разгребать ваш код не проклинал вас страшными проклятиями.
    2. Покажите сам запрос который уходит на сервер и ответ сервера.
    3. Если уходит запрос, приходит ответ, но не тот, который вый ждёте, выкладывайте запрос, ответ и исходник обработчика запроса.
     
  16. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    while($rows = mysql_fetch_array($result))
    {

    $colvo = $colvo + 1;

    echo '<td class="edit razdel '.$rows["id"].'">'.$rows["razdel"].'</td>
    <td class="edit podrazdel '.$rows["id"].'">'.$rows["podrazdel"].'</td>
    <td class="edit tovar '.$rows["id"].'">'.$rows["tovar"].'</td>
    <td class="edit opisanie '.$rows["id"].'">'.$rows["opisanie"].'</td>
    <td class="edit prais '.$rows["id"].'">'.$rows["prais"].'</td>



    <td><a href="../rez/delete.php"
    onclick="
    $.ajax({
    type: "POST",
    url: "../rez/delete.php",
    data: "id='.$rows["id"].'"
    });
    "

    >0</a>



    </td>

    </tr>';

    получается таблица в которой можно править данные надо что бы можно было удалить ненужные строчки

    Добавлено спустя 46 минут 24 секунды:
    файл delete.php

    <?
    require_once('../rez/baza.php');
    $id=$_POST['id'];
    echo $id;
    $sql="DELETE FROM tovar WHERE id=$id";
    mysql_query($sql);
    ?>
     
  17. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    1. Временно измените протокол на GET и посмотрите что отвечает ваш обработчик на запросы вида http:// site.com/.../rez/delete.php?id=123
    2. В самом обработчике сделайте вывод ошибки mysql при её возникновении и результат выполнения запроса, для чего обратитесь к документации по функциям mysql_num_rows() и mysql_error()
    3. Настоятельно рекомендую почитать об отладке сценариев на PHP и защите от SQL-инъекций. В существующей версии ваш код позволяет недоброжелателю делать с вашей базой данных всё что ему захочется.
     
  18. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    выполняется как надо
    <?
    require_once('../rez/baza.php');
    $id=$_GET['id'];
    echo $id;
    $sql="DELETE FROM tovar WHERE id=$id";
    mysql_query($sql);
    ?>

    Добавлено спустя 1 минуту 38 секунд:
    обработчик не может получить id через post
     
  19. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Почитайте об отладке Ajax-запросов через плагины браузера типа Firebug. Посмотрите через плагин (или через что вам удобнее) куда вы шлёте запросы и что вам отвечает сервер.
    Скорее всего из js вы шлёте запрос по несуществующему адресу.
     
  20. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    не понимаю ничего

    Добавлено спустя 15 минут 32 секунды:
    выдает <a href="" onclick="$.ajax({type: " post",="" url:="" "..="" rez="" del.php",="" data:="" "id="58"})"">
    фигня какаето
     
  21. igroc

    igroc Активный пользователь

    С нами с:
    15 июл 2014
    Сообщения:
    75
    Симпатии:
    1
    переделал работает даже но фигня полная
    echo '
    <td><a href="" onclick="

    $.ajax({type: \'POST\',
    url: \'../rez/del.php\',
    data: \'id='.$rows["id"].'\'});"
    >00</a>

    ';

    помогите упростить
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а чего не нравится?