Отправка информации в PHP-скрипт с использованием Ajax

#javascript #php #jquery #ajax #post

#javascript #php #jquery #ajax #Публикация

Вопрос:

Я хотел бы отправлять ajax-команду php-скрипту каждый раз при нажатии кнопки. DIVS называются r, l, t, b для разных направлений. До сих пор я пытался использовать приведенный ниже код. Но почему-то это не работает. У меня не так много опыта в jquery, и именно поэтому я прошу здесь простого решения. Я мог бы написать 4 раза одну и ту же функцию, но это, конечно, не то, что я ищу.

 $(document).ready(function(){

function control(id){
    $.ajax({
        type: "POST",
        url: "control.php",
        data: {id: "1"},
        success:  function(data){
            alert(data);
        }
    });
}

$('#r').mousedown(function(){
    control($(this).attr('id'));
});

});
  

Комментарии:

1. Описать «это не работает»

2. Ваш php не улавливает это? Вызывает ли «АЯКС» огонь? Вы вставили {error:function(){}} в вызов ajax, чтобы узнать, действительно ли он был запущен?

3. Из чего ты отправляешь ответ control.php . Json? Html?

Ответ №1:

Ну, во-первых…

Просто дайте всем вашим разделам класс

  <div id="r" class="direction"></div>
  <div id="l" class="direction"></div>
    <div id="t" class="direction"></div>
      <div id="b" class="direction"></div>
  

Затем перепишите свой jquery

 $(document).ready(function(){
      $('.direction').mousedown(function(){
          $.post("control.php",{id: $(this).attr('id')},function(msg){
               alert(msg);
          });
      });
  });
  

Если вы случайно получаете JSON с серверов….
Вы должны указать тип данных как ‘json’ или ‘jsonp’ для междоменного json и использовать $.ajax

 function control(theid){
$.ajax({
    type: "POST",
    url: "control.php",
    data: {id: theid},
    dataType: 'json',
    success:  function(msg){
        alert(msg);
    }
});
  

}

Или, если вы хотите, чтобы это было просто, как в приведенном выше примере $.post ….. используйте getJSON

    $(document).ready(function(){
      $('.direction').mousedown(function(){
          $.getJSON("control.php",{id: $(this).attr('id')},function(msg){
               alert(msg);
          });
      });
  });
  

Комментарии:

1. Это тоже был очень хороший ответ, и это даже лучше, потому что вы привязываете событие к классу вместо нескольких идентификаторов. мой ответ работает, но, на мой взгляд, это был правильный ответ.

Ответ №2:

Трудно точно понять, о чем вы спрашиваете, но в основном вам нужно многоцелевое событие щелчка для нескольких divs.

в jQuery вы можете добавить несколько селекторов, разделив их запятыми, например, так:

 $('#id, .class, element')
  

Вот пример, который использует меньше кода для обеспечения той же функциональности, если я правильно понял ваш вопрос.

 $(function(){
    $('#r,#l,#t,#b').mousedown(function(){
        $.post('control.php',{id: $(this).attr('id')},function(data){
            //handle data callback
            alert(data);
        });
    });
});
  

Я использовал $.post вместо $.ajax , но имейте в виду, что если вы используете более простые методы, такие как post, get или getJSON, вы не сможете назначить обратный вызов с ошибкой, насколько мне известно. Надеюсь, это изменится в будущих выпусках jQuery.

Ответ №3:

 function control(my_id){
    $.ajax({
        type: "POST",
        url: "control.php",
        data: {id: my_id},
        success:  function(data){
            alert(data);
        }
    });
}
  

Используя $_POST['id']; , вы должны получить информацию, которую ищете.