PHP AJAX — Может ли элемент иметь «действие», как это делает ?

#javascript #php #jquery #html #ajax

#javascript #php #jquery #HTML #ajax

Вопрос:

Формы имеют action атрибут, указывающий, куда (например .php , файл) отправлять. Есть ли <input> у элементов action атрибут?

  1. Ответ, скорее всего, нет. Но я хотел бы знать, в какой концепции я здесь ошибаюсь?
  2. Есть ли эквивалент action for <input> ?
  3. Причина, по которой я спрашиваю об этом, заключается в том, что у меня есть несколько флажков, и я хочу использовать AJAX для запуска чего-либо в PHP-файл, так что a div изменяется при установке флажков (я не хочу перезагружать всю страницу).). Как мне это сделать?

Я все еще разрабатываю код на этом этапе, но пример можно увидеть здесь .

Ценю ваши предложения!

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

1. action Для входных данных нет атрибута. Однако вы можете вызвать AJAX по click/checked событию. Пожалуйста, поделитесь своим кодом и четко объясните, чего вы хотите здесь достичь.

2. использовать .load() при изменении флажка

Ответ №1:

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

Добавьте обработчик событий ко всем из них, сериализуйте () форму и публикуйте ее всякий раз, когда какой-либо из них изменяется

 var $form =$('#myForm'); 
$form.find(':checkbox').change(function(){
     var formData = $form.serialize();
     $.post('/someFile.php', formData, function(response){
         // do something with response
     }).fail(function(){
         alert("Oops something bad happened');
     });
});
  

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

1. @charlietfI выглядит действительно многообещающе! Только один вопрос, скажем, я отправляю в someFile.php , делает ли это перезагрузку php-страницы, на которой вы находитесь? Или перезагружается только один сектор страницы?

2. это полностью зависит от вас. Там, где я отметил, сделайте что-нибудь с ответом, этот ответ может быть html или это могут быть данные для обновления чего-либо на странице. Много применений для ajax

3. И когда возвращается html, большую часть времени это не полная страница… просто части

Ответ №2:

Используйте методы jQuery AJAX:

AJAX — это искусство обмена данными с сервером и обновления частей веб-страницы — без перезагрузки всей страницы.

ПРИМЕР:

 $(document).ready(function(){
    $("button").click(function(){
    // You can call ajax on any event of html element like checkbox checked, dropdown changed
        $.ajax({url: "demo_test.txt", success: function(result){
            $("#div1").html(result);
        }});
    });
});
  

Ответ №3:

 $(document).on('change', '#checkboxid', function() {
    if ($(this).is(':checked')) {
        $('#container').load('pages/somephpfile.php');
    }

});
  

Использовать .load() при смене флажка

  1. вы не можете установить, какой php-файл загружать, основываясь на статусе флажка.

Также попробуйте

 $(document).on('change', '#checkboxid', function() {
    $.ajax({
        type: 'POST',
        url: 'somephp.php',
        dataType: "html",
        success: function(data) {
            $('#container').html(data) //load the data from somephp.php here
        }
    });
});
  

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

1. не имеет смысла делать один и тот же запрос без данных для обоих состояний флажка

2. @charlietfl это то, что ты имеешь в виду?

3. все еще думаю, что это слабый пример, который не показывает использование this или возможность отправки на сервер чего-либо конкретного, связанного с этим флажком

4. @charlietfl мне жаль, что я не получил эту часть с сервером? я только прочитал such that the a div changes when the checkboxes are ticked

5. @iWillGetBetter да… существует метод jQuery serialize() , который выполняет целую форму, и вы бы использовали $.ajax его как другой ответ или $.post() или в зависимости от того, что вам нужно в ответе, возможно, может быть load(), как этот ответ