Как передать данные из определенного поля ввода на странице в PHP с помощью AJAX в OpenCart?

Как можно настроить отправку данных из соответствующей формы, чтобы при нажатии на кнопку отправки, данные отправлялись из этой конкретной формы, а не из верхней? Верхняя форма отправляет данные, но хотелось бы, чтобы данные отправлялись из формы, в которой произошло нажатие на кнопку submit.
  • 23 августа 2024 г. 22:54
Ответы на вопрос 2
Для передачи данных из определенного поля ввода на странице в PHP с помощью AJAX в OpenCart, вы можете использовать следующий код:

1. На стороне клиента (в файле шаблона или скрипте JavaScript):
```javascript
$('#submit_btn').on('click', function() {
    var inputData = $('#input_field').val();

    $.ajax({
        url: 'process.php', // путь к обработчику на стороне сервера
        type: 'POST',
        data: {inputData: inputData},
        success: function(response) {
            // обработка ответа от сервера
        }
    });
});
```

2. На стороне сервера (в файле process.php):
```php
$inputData = $_POST['inputData'];

// Обработка данных
// Например, сохранение данных в базу данных или какая-то другая логика

echo 'Данные успешно переданы';
```

Чтобы отправлять данные из конкретной формы при нажатии на кнопку submit, вам необходимо использовать уникальный идентификатор для каждой формы и кнопки submit. Например, такой код на стороне клиента (в файле шаблона или скрипте JavaScript) может помочь вам добиться этого:

```javascript
$('.submit_btn').on('click', function() {
    var inputData = $(this).closest('form').find('.input_field').val();

    $.ajax({
        url: 'process.php',
        type: 'POST',
        data: {inputData: inputData},
        success: function(response) {
            // обработка ответа от сервера
        }
    });
});
```

Этот код найдет ближайшую форму к кнопке submit, в которой была нажата кнопка, и передаст данные из соответствующего поля ввода. Важно также убедиться, что каждая форма имеет уникальный идентификатор или класс для корректной работы скрипта.
Код контроллера и модели тут лишние. Проблема именно здесь: 
{
  firstname: $('input[name="name"]').val(),
  telephone: $('input[name="tel"]').val(),
  service: $('input[name="service"]').val(),
},


Значения берутся самые первые, а не из той формы, которая нужна. Вариантов несколько. Я, как слабенький во фронтенде, подскажу самый "тупой" вариант.
$(document).ready(function() {
    $('[type="submit"]').on('click', function() {
        $.ajax({
            url: 'index.php?route=demo/test&language=ru-ru',
            type: 'POST',
            dataType: 'json',
            data: {
                    firstname: $(this).parents('form').find('input[name="name"]').val(),
                    telephone: $(this).parents('form').find('input[name="tel"]').val(),
                    service: $(this).parents('form').find('input[name="service"]').val(),
                 },
            success: function(data) {
                if(data.success) {
                    alert("Заметка добавлена!")
                } else {
                    alert("Ошибка записи!")
                }
            }
        });
    });
});


Есть решения элегантнее, но просто непонятно, есть ли доступ к редактированию html, например
Похожие вопросы