Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.10.2019, 17:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Только как это получается, если эта строка идентификаторов товаров ("это все товары (вывела их с помощью записей на вордпресс)"), а значение полей только одного товара? Или это идентификаторы каких-то параметров одного товара?
Ответить с цитированием
  #12 (permalink)  
Старый 15.10.2019, 00:37
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

Мне нужно чтоб при каждом клике и успешной отправке на сервер, для записей с выбранным id (id получаем при клике) в метаполе pole_booked_product передавалось значение "1". Это метаполе есть в каждой записи. Так не работает
jQuery(document).ready(function() {
   jQuery(".submit").on("click", function (event) {
        event.preventDefault();

  if (jQuery(".block-border").hasClass("active")) {
        var name = jQuery('.form-name').val();
        var last_name = jQuery('.form-last_name').val();
        var form_phone = jQuery('.form-phone').val();
        var form_country = jQuery('.form-country').val();
        var form_city = jQuery('.form-city').val();
        var form_street = jQuery('.form-street').val();
        var form_message = jQuery('.form-message').val();

        var form_num = jQuery('.form-num').val();     
        var form_weight1 = jQuery('.form-weight1').val();
        var form_weight2 = jQuery('.form-weight2').val();
        var form_num2 = jQuery('.form-num2').val();
        var form_weight3 = jQuery('.form-weight3').val();
        var form_weight4 = jQuery('.form-weight4').val();

    var ids = 'post_id_' + jQuery.map(jQuery('.block-border.active'), function(a) {
    return jQuery(a).find('.hidd').attr('id')
}).join(', post_id_');


        jQuery.ajax({
            context: document.body,
            url: "/wp-admin/admin-ajax.php",
            method: 'post',

            data: {
                action: 'ajax_order',
                name: name,
                last_name: last_name,
                phone: form_phone,
                country: form_country,
                city: form_city,
                street: form_street,
                message: form_message,
                form_num: form_num,
                form_weight1: form_weight1,
                form_weight2: form_weight2,
                form_num2: form_num2,
                form_weight3: form_weight3,
                form_weight4: form_weight4,
                //post_id: jQuery('.block-border.active').find('.hidd').attr('id'),
                post_id:ids,
                meta_val: 1
            },
            function(date) {
          jQuery('.block-border').hasClass("active").find('.hidd').text(date); 
        },
            success: function (response) {
                jQuery("#sendform").html('<p class="thank" style="text-align: center;margin-bottom: 0px;">Заказ забронирован!<p>');
            }
        });
};
    });
   });




<?php function total_form(){
 $name = $_REQUEST['name'];
 $last_name = $_REQUEST['last_name'];
 $phone = $_REQUEST['phone'];
 $country = $_REQUEST['country'];
 $city = $_REQUEST['city'];
 $street = $_REQUEST['street'];
 $message = $_REQUEST['message'];

 $form_num = $_REQUEST['form_num'];
 $form_weight1 = $_REQUEST['form_weight1'];
 $form_weight2 = $_REQUEST['form_weight2'];
 $form_num2 = $_REQUEST['form_num2'];
 $form_weight3 = $_REQUEST['form_weight3'];
 $form_weight4 = $_REQUEST['form_weight4'];
 $metaVal = $_POST['meta_val'];
 //$post_id = $_POST['post_id'];
 $post_id = json_decode($_POST['post_id'], 1); //массив id
 //$action = 'post_id_' . $post_id;
 $action = 'post_id_' . implode(', post_id_', json_decode($_POST['post_id'], 1));
 
    update_post_meta($post_id, 'pole_booked_product', $metaVal);
    //echo get_post_meta($post_id, 'pole_booked_product', true);
 
    $response = '';
    $thm  = 'Заказ звонка';
    $thm  = "=?utf-8?b?". base64_encode($thm) ."?=";
    $msg = "Имя: ".$name."<br/>
        Фамилия: ".$last_name ."<br/>
        Телефон: ".$phone ."<br/>
        Страна: ".$country ."<br/>
        Город: ".$city ."<br/>
        Улица: ".$street ."<br/>
        Сообщение: ".$message ."<br/>

        № HELIX ASPERSA MULLER: ".$form_num ."<br/>
        1 класс HELIX ASPERSA MULLER: ".$form_weight1 ."<br/>
        2 класс HELIX ASPERSA MULLER: ".$form_weight2 ."<br/>
        № HELIX ASPERSA MAXIMA: ".$form_num2 ."<br/>
        1 класс HELIX ASPERSA MAXIMA: ".$form_weight3 ."<br/>
        2 класс HELIX ASPERSA MAXIMA: ".$form_weight4 ."<br/>
        ";
    $mail_to = 'juliaradionova1991@gmail.com';
    $headers = "Content-Type: text/html; charset=utf-8\n";
    //$headers .= 'From: test@gmail.com' . "\r\n";

// Отправляем почтовое сообщение

    if(mail($mail_to, $thm, $msg, $headers)){
        $response = 'Сообщение отправлено';
    }else
        $response = 'Ошибка при отправке';

// Сообщение о результате отправки почты

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
        echo $response;
        wp_die();
    }
}

add_action('wp_ajax_nopriv_ajax_order', 'total_form' );
add_action('wp_ajax_ajax_order', 'total_form' ); ?>

Последний раз редактировалось Julia1991, 15.10.2019 в 00:44.
Ответить с цитированием
  #13 (permalink)  
Старый 15.10.2019, 05:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если "для записей с выбранным id (id получаем при клике)", то что означает "как в post_id: jQuery('.block-border.active').find('.hidd').attr('id') передать все полученные id? А не только первый по которому кликнули"? Так и осталось загадкой.

А что касаемо "в метаполе pole_booked_product передавалось значение "1", то зачем же вообще это передавать, если достаточно на сервере указать явно update_post_meta($post_id, 'pole_booked_product', 1); или это значение определяет действия и, например, может быть 0 при удалении?

Показали бы html код одного блока, а так не понятно что за проблемы.
Ответить с цитированием
  #14 (permalink)  
Старый 15.10.2019, 08:48
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

Это код страницы записи
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <span class="cross"><i class="fa fa-times" aria-hidden="true"></i></span>
    <p class="product_number"><?php echo get_post_meta($post->ID, 'pole_num_product', true); ?></p>
    <div class="block-border">    
        <p class="product_class"><?php echo get_post_meta($post->ID, 'pole_1', true); ?></p>
        <p class="product_title"><?php echo get_post_meta($post->ID, 'pole_2', true); ?></p>
        <p class="product_weight"><?php echo get_post_meta($post->ID, 'pole_3', true); ?></p>
        <p style="display: none;" class='hidd' id="<?php the_ID(); ?>"><?php echo get_post_meta($post->ID, 'pole_booked_product', true); ?></p>
        <?php if ( ! empty( trim( get_post_meta( $post->ID, 'pole_booked_product', true ) ) ) ) {?>
           <script>
                jQuery("#post-<?php the_ID(); ?>").find('.block-border').removeClass('active').addClass('booked').css("cursor", "default");
                jQuery("#post-<?php the_ID(); ?>").closest(".preorder-snails").addClass('booked');
           </script>
       <?php } 
       ?>
   </div>
</div>
Ответить с цитированием
  #15 (permalink)  
Старый 15.10.2019, 09:26
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

post_id: jQuery('.block-border.active').find('.hidd').attr('id') это мы цепляемся за Id этого тега с классом hidd, у этого тега id как и у записи и текстовое значение этого тега должно быть или пустое и 1 (если передадим "1")
Ответить с цитированием
  #16 (permalink)  
Старый 15.10.2019, 09:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Это РНР вывод, а код, это результирующий html на странице, который можно получить в браузере, например, в отладчике выбрав блок, выбрать в контекстном меню копирование внешнего html. Или если это так трудно, дайте ссылку на страницу.
Ответить с цитированием
  #17 (permalink)  
Старый 15.10.2019, 09:28
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

http://snails.2w-shop.com/preorder-snails/
Ответить с цитированием
  #18 (permalink)  
Старый 15.10.2019, 09:31
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

нужно чтоб выбрав несколько элементов (чтоб всем выбранным передалось значение "1" в мета поле каждой записи pole_booked_product), у меня пока только получается так, при выборе нескольких - значение получает только первая выбранная запись
Ответить с цитированием
  #19 (permalink)  
Старый 15.10.2019, 09:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Julia1991
post_id: jQuery('.block-border.active').find('.hidd').attr('id') это мы цепляемся за Id этого тега с классом hidd
Тогда почему вы задаете вопрос "как получить все" и вам показывают как их выбрать, то есть массив?

Сообщение от Julia1991
у этого тега id как и у записи и текстовое значение этого тега должно быть или пустое и 1 (если передадим "1")
Это вообще не понятно, как это id может быть равно чему-то, что всегда передается как 1, да и не может быть пустым?
Ответить с цитированием
  #20 (permalink)  
Старый 15.10.2019, 09:39
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

<p style="display: none;" class='hidd' id="<?php the_ID(); ?>"><?php echo get_post_meta($post->ID, 'pole_booked_product', true); ?></p>
это наше метаполе, этому тегу я присвоила id записи. Он выводится в каждой записи со своим Id. При клике на блоки .block-border я им присваиваю класс .active. При нажатии на кнопку .submit и отправке на сервер, метаполе pole_booked_product должно быть заполнено для все блоков у которых .block-border имеет класс .active на момент отправки на сервер.
Эти все блоки как товары (только с помощью записей). Мне нужно заполнить метаполе в админ-панели для тех товаров, которые купили.

Последний раз редактировалось Julia1991, 15.10.2019 в 09:42.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать массив из PHP в JavaScript Ajax Mayder Общие вопросы Javascript 7 01.12.2016 18:50
Передать элементы php массива в js переменную zav Элементы интерфейса 3 22.11.2016 14:35
Как передать массива из объекта php в js suxxoi Элементы интерфейса 4 11.09.2016 17:06
Передать массив в JS-функцию koeshiro Общие вопросы Javascript 3 13.09.2013 15:16
Передать несколько значений из JS на сервер, методом POST балерун Общие вопросы Javascript 1 02.03.2010 14:36