Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
picusus
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 69
1

Как передать данные из одинаковых форм php скрипту через AJAX?

06.10.2016, 00:45. Просмотров 438. Ответов 3
Метки нет (Все метки)

Задача следующая:
На странице 50 форм. Все они разные и имеют структуру:
Например форма #1
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form id="update_goods_info_1" name="update_goods_info_1" method="post" action="" onsubmit="getdetails(1)">
  Кол-во товаров: <input name="inventory" type="text" id="inventory" size="6" maxlength="6" /> 
  <br/>
  Новая цена: <input name="price" type="text" id="price" size="10" maxlength="10" /> 
  <br/>
  Старая цена: 
  <input name="old_price" type="text" id="old_price" size="10" maxlength="10" /> 
  <br/>
  <input type="hidden" name="goods_id" id="goods_id" value="1">
  <div class="results_script_work_1"></div>
  <input value="Обновить" type="submit"> 
</form>
Например форма #2
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form id="update_goods_info_2" name="update_goods_info_2" method="post" action="" onsubmit="getdetails(2)">
  Кол-во товаров: <input name="inventory" type="text" id="inventory" size="6" maxlength="6" /> 
  <br/>
  Новая цена: <input name="price" type="text" id="price" size="10" maxlength="10" /> 
  <br/>
  Старая цена: 
  <input name="old_price" type="text" id="old_price" size="10" maxlength="10" /> 
  <br/>
  <input type="hidden" name="goods_id" id="goods_id" value="2">
  <div class="results_script_work_2"></div>
  <input value="Обновить" type="submit"> 
</form>
На странице подключена библиотека: jquery-1.11.1.min.js

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

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

Мне не хватает функции getdetails() которая будет передавать данные формы php скрипту.

Помогите написать эту функцию.

Как я и сказал, если что у каждой формы можно сделать уникальный id и передать его функции.

Так же результат выполнения скрипта выводить рядом с каждой формой. Если что <div class="results_script_work_2"></div> у каждой формы уникальный.

Что я предлагаю: надо передать функции JS getdetails() этот префикс, который делает каждую форму уникальной, и в зависимости от этого префикса обработать и передать данные именно этой формы и изменить значение div class="results_script_work_2 именно у нужной формы. Помогите написать функцию getdetails(), чтобы данные формы которые отправляется были доступны в POST массиве в скрипте update.php

Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 00:45
Ответы с готовыми решениями:

Передать через Ajax php переменную
Со страницы авторизации, идет перенаправление на главную страницу. Все данные о...

Передача данных формы скрипту php посредством js (ajax)
Вопрос по ajax. &lt;?php header('Content-type: text/html; charset=UTF-8'); ?&gt;...

Передать данные внешнему скрипту и остаться на текущей странице
Добрый день! Имеется задача Страница с одной кнопкой, при нажатии на...

Как передать данные JavaScript в GET параметр PHP?
в странице есть список сотрудников компании. при клике на определенного...

Как получить данные из базы данных БЕЗ использования php только JS(ajax)
Всем привет. Появилась задача, у меня есть база данных &quot;test-work&quot; в ней...

3
we2seek
80 / 80 / 42
Регистрация: 25.01.2010
Сообщений: 385
06.10.2016, 03:16 2
Посмотрел, аж плакать захотелось. Я не буду спрашивать зачем на странице 50 форм, но попробую помочь, т.к. вижу ты старался.
Я немного убрал лишнее, хоть мой код и не идеал, просто спать уже охота. Но если ты используешь jQuery, так используй с умом. На кой тебе на каждое поле id?

Держи:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<body>
        <form>
            <h4>Form 1</h4>
            <table>
                <tbody>
                    <tr>
                        <td>Кол-во товаров:</td>
                        <td><input name="inventory" type="text" maxlength="6" autofocus></td>
                    </tr>
                    <tr>
                        <td>Старая цена:</td>
                        <td><input name="old_price" type="text" maxlength="10"></td>
                    </tr>
                    <tr>
                        <td>Новая цена:</td>
                        <td><input name="price" type="text" maxlength="10"></td>
                    </tr>
                    <tr>
                        <td><input value="Обновить" type="submit"> </td>
                        <td class="results"></td>
                    </tr>
                </tbody>
            </table>
            <input type="hidden" name="goods_id" value="1">
        </form>
 
        <form>
            <h4>Form 2</h4>
            <table>
                <tbody>
                    <tr>
                        <td>Кол-во товаров:</td>
                        <td><input name="inventory" type="text" maxlength="6" autofocus></td>
                    </tr>
                    <tr>
                        <td>Старая цена:</td>
                        <td><input name="old_price" type="text" maxlength="10"></td>
                    </tr>
                    <tr>
                        <td>Новая цена:</td>
                        <td><input name="price" type="text" maxlength="10"></td>
                    </tr>
                    <tr>
                        <td><input value="Обновить" type="submit"> </td>
                        <td class="results"></td>
                    </tr>
                </tbody>
            </table>
            <input type="hidden" name="goods_id" value="2">
        </form>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$(function () {
 
    $('form').submit(function (e) {
        var result = $(this).find('.results');
        
        $.ajax({
            type: 'post',
            url: 'php/process.php',
            data: $(this).serialize(),
            success: function (data) {
                rawHtml = '';
                if (data.inv) {
                    rawHtml += '<b>inv: </b>' + data.inv;
                }
 
                if (data.goods_id) {
                    rawHtml += '<b>goods_id: </b>' + data.goods_id;
                }
 
                result.html(rawHtml);
            },
            error: function (e){
                console.log(e);
                alert(e.statusText);
            }
 
        });
 
        e.preventDefault();
    });
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
    
    header('Content-type:application/json;charset=utf-8');
    //header('HTTP/1.1 500 Internal Server Booboo');
 
    $result = [];
 
    if (isset($_POST["inventory"])) {
        $result["inv"] = $_POST["inventory"];
    }
    
    if (isset($_POST["old_price"])) {
        $result["old_price"] = $_POST["old_price"];
    }
 
    if (isset($_POST["price"])) {
        $result["price"] = $_POST["price"];
    }
 
    if (isset($_POST["goods_id"])) {
        $result["goods_id"] = $_POST["goods_id"];
    }
 
 
echo json_encode($result);
0
picusus
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 69
06.10.2016, 12:18  [ТС] 3
Хорошо, сейчас попробую всё это сделать. Потом отпишусь. Только не понял как эта функция будет срабатывать на нажатие по кнопке submit?

Добавлено через 17 минут
Через alert выдаётся Internal Server Error
Несколько вопросов, не обязательно указывать id формы?
Метод который вызывает по действию на кнопке onsubmit?
Как узнаётся что вызываться должна именно это функция?
Каким способом передавать данные тоже не обязательно?

Если не получится так сделать то сделаю с перезагрузкой страницы. Надо изучать JQuery и AJAX.(
0
we2seek
80 / 80 / 42
Регистрация: 25.01.2010
Сообщений: 385
06.10.2016, 17:50 4
Цитата Сообщение от picusus Посмотреть сообщение
Надо изучать JQuery и AJAX.(
да там учить нечего. Возьми просто потренируйся на простеньких хелловордах.
Цитата Сообщение от picusus Посмотреть сообщение
Через alert выдаётся Internal Server Error
Это ошибка в твоем PHP-скрипте или что там у тебя обрабатывает запрос (url: 'php/process.php')
Цитата Сообщение от picusus Посмотреть сообщение
Несколько вопросов, не обязательно указывать id формы?
В данном случае - нет, т.к. находясь в обработчике $('form').submit(function (e) { ... } у тебя уже есть доступ именно к той форме, на которой сработал сабмит
Цитата Сообщение от picusus Посмотреть сообщение
Метод который вызывает по действию на кнопке onsubmit?
$('form').submit(function (e) { ... }
Цитата Сообщение от picusus Посмотреть сообщение
Как узнаётся что вызываться должна именно это функция?
Какая функция?
Цитата Сообщение от picusus Посмотреть сообщение
Каким способом передавать данные тоже не обязательно?
GET или POST? Способ передачи ты переопределяешь в jQuery:
type: 'post'
поэтому монописуарно, что ты укажешь в теге <form>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2016, 17:50

Как отправить и получить ответ от php через ajax?
Здравствуйте. Не совсем было понятно, где создавать тему (php или js). Если...

Не удается передать данные ajax
&lt;script type=&quot;text/javascript&quot;&gt; function crtfns(id){ alert(id); var req...

Передать переменную из php в ajax
Все привет,есть два скрипта php и ajax,находятся они не на одной странице,мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru