Wordpress публикует данные массива с помощью AJAX - PullRequest
0 голосов
/ 21 сентября 2018

Я создал элемент localStorage, который хочу опубликовать на сервере с помощью AJAX.Я перебрал данные элемента localStorage и перенес эти данные в новый массив.Теперь я хочу опубликовать этот новый массив на сервере, но мои поля данных в вызове ajax возвращают 0.

let shopItem = JSON.parse(localStorage.getItem('item'));


let array = [];
for (var i = 0; i < shopItem.length; i++){
    let chosen_date = shopItem[i].chosen_date;
    let product_id = shopItem[i].product_id;
    let quantity = shopItem[i].quantity;
    array.push({product_id: product_id, quantity: quantity, chosen_date: chosen_date}); 
}

$.ajax({
    url: ajaxscript.ajax_url,
    method: "post",
    data: {
        action: "add_this_shit_to_cart",
        product_id: array.product_id, // LOOP HERE THROUGH ARRAY??
        chosen_date: array.chosen_date, // LOOP HERE THROUGH ARRAY??
        quantity: array.quantity // LOOP HERE THROUGH ARRAY??
    },
    success: function(response) {
        console.log("resp: ", response);
    },
    error: function(err) {
        console.log(err);
    }
});

Итак, нужно ли мне снова проходить массив для каждого поля?

В моем functions.php у меня есть это:

function add_this_shit_to_cart() {
   ob_start();

   $product_id = intval($_POST['product_id'] );
   $chosen_date = intval($_POST['chosen_date'] );
   $quantity = intval($_POST['quantity'] );

    $data = array(
        'product' => $product_id,
        'chosen_date' => $chosen_date,
        'quantity' => $quantity
    );

    echo json_encode($data);

   die();
}

add_action( 'wp_ajax_add_this_shit_to_cart', 'add_this_shit_to_cart' );
add_action( 'wp_ajax_nopriv_add_this_shit_to_cart', 'add_this_shit_to_cart' );

Может ли кто-нибудь мне помочь?

И да, основной вопрос: хранятся ли эти данные в базе данных?

Я новичок в WordPress, так что ...

1 Ответ

0 голосов
/ 21 сентября 2018

Я не могу комментировать, поэтому я публикую это как ответ.

Вы пытались console.log (shopItem)?Насколько я понимаю, shopItem - это объект.Вы не можете пройтись по объекту, как то, что вы сделали здесь:

for (var i = 0; i < shopItem.length; i++){
    let chosen_date = shopItem[i].chosen_date;
    let product_id = shopItem[i].product_id;
    let quantity = shopItem[i].quantity;
    array.push({product_id: product_id, quantity: quantity, chosen_date: chosen_date}); 
}

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of

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