Получение скрытого входного значения от ajax до php - PullRequest
0 голосов
/ 04 апреля 2020

Я не могу получить значение скрытого ввода от ajax до PHP с помощью следующего кода. Здесь проблема в том, что я не знаю идентификатор ввода. Я имею в виду его динамику c.

<div id="comboproducts">
 foreach ($comboproducts as $product) {
<input type="hidden" id="comboproductsid<?php echo $product['product_id']; ?>" value="<?php echo $product['product_id']; ?>" /> 
}
</div>

ajax часть

$.ajax({
    url: 'index.php?route=checkout/cart/addcombo',
    type: 'post',
    data: $('#comboproducts input[type=\'hidden\']'),
    dataType: 'json',
    beforeSend: function() {
        $('#button-cart').button('loading');
    },
    complete: function() {
        $('#button-cart').button('reset');
    },
    success: function(json) {

   alert(json);
        }
    }
});

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Если у меня есть ключи, которые определяют значения, я просто добавляю атрибут имени в скрытое текстовое поле и помещаю значение ключа в качестве имени. Затем итерируйте значения записей, и если они установлены, я получу эти значения.

массив EX

$comboproducts = array(
    'tv' => array(
        'product_id' => 23,
        'price' => 34.23,
        'stock' => 31,
        'shipable' => true
    ),
    'phone' => array(
        'product_id' => 3,
        'price' => 250.99,
        'stock' => 99,
        'shipable' => true
    )

);
$stmt = null;
foreach ($comboproducts as $key => $product) {
    $stmt .= '<input type="hidden" name="'.$key.'" value="'.$product['product_id'].'">';
}
$value=null;
foreach ($comboproducts as $key => $product) {
    if(isset($_POST[$key])){
        $value[$key] = $_POST[$key];
    } 
}

print_r($value);

ВЫХОД:

Array ( 
  [tv] => 23 
  [phone] => 3 
)
0 голосов
/ 04 апреля 2020

Все сводится к data, который вы отправляете в вашей AJAX полезной нагрузке. Похоже, вы используете как POST, так и GET в вашем скрипте. Данные публикации должны быть объектами.

Теперь, если существует несколько идентификаторов одного и того же типа элемента, вам нужно будет зафиксировать это в обратном вызове click, прежде чем вызывать AJAX. Если есть только один, вы можете использовать селектор атрибута, например $("[id^='comboproductsid']") См. Подробнее: Атрибут начинается с селектора .

$.ajax({
  url: 'index.php?route=checkout/cart/addcombo',
  type: 'post',
  data: {
    "product_id": $("input[type='hidden'][id^='comboproductsid']").val()
  },
  dataType: 'json',
  beforeSend: function() {
    $('#button-cart').button('loading');
  },
  complete: function() {
    $('#button-cart').button('reset');
  },
  success: function(json) {
    alert(json);
  }
});

В вашем PHP это может быть достигнуто с $_POST['product_id'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...