Обновление веса сконфигурированного продукта с передачей переменных через (Admin) Ajax для корзины покупок ... Проблема в том, что вес нужно сначала рассчитать через jQuery, а затем отправить через AJAX, чтобы обновился общий вес в корзине. Я много пробовал и спрашивал, ни у кого нет решения, что переход к рассматриваемой переменной PHP почему-то не работает или мне не удалось (я не так тверд в PHP), может быть, есть не так много не хватает, вот мой последний код:
в функциях. php:
wp_enqueue_script( 'ajax-script', get_stylesheet_directory_uri().'/js/weight_hardox.js', array('jquery') );
// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( 'ajax-script', 'ajax_object',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ),'gewt' => 0, 'gewt_ges' => 0, ) );
// Same handler function...
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );
function my_action() {
global $wpdb;
$gewicht = floatval( $_POST['gewicht'] );
$gesamtgewicht = floatval( $_POST['gesamtgewicht'] );
echo 'gewicht:' . $gewicht;
echo '<small>Gewicht update: ' . $gewicht.'+'. $gesamtgewicht. ' ' . get_option('woocommerce_weight_unit') . '</small>';
wp_die();
}
weight_hardox. js:
jQuery(document).ready(function($) {
var myurl = document.URL; //console.log('myurl '+myurl );
var gew_h=0;
var vGwges=0;
var sum=0;
var gewt1=0;
var gewt=0;
var gew_hs=0;
if ( (myurl.indexOf("warenkorb") != -1) || (myurl.indexOf("kasse") != -1) || (myurl.indexOf("hardox-500-zuschnitt") != -1) ) {
//.single-product calc weight
//if (myurl.indexOf("hardox-500-zuschnitt") != -1) {
jQuery(document).on('change', '.single-product .summary .cart input', function() {
var vmats=parseFloat(jQuery( '.uni-module-radio input:checked+.uni-cpo-radio-option-label .uni-cpo-option-label__text' ).text()); console.log('ok fs ' + vmats);
var vLgs=parseFloat(jQuery( '#uni_cpo_laenge2-field' ).val()); //console.log('ok fs ' + vLgs);
var vBts=parseFloat(jQuery( '#uni_cpo_breite_hardox_rq2-field' ).val()); //console.log('ok fs ' + vBts);
var vSts=parseFloat(jQuery( '#uni_cpo_stckzahl-field' ).val()); //console.log('ok fs ' + vSts);
gewt = parseFloat(vmats*vLgs*vBts*vSts*0.000008); //
gewt = parseFloat((gewt).toFixed(3)); console.log('gew_hs ' + gewt);
var vGws = jQuery( '#gewb' ).text();
vGws = jQuery( '#gewb' ).text(gewt);
window.setTimeout(function(){
vGws = jQuery( '#gewb' ).text(); console.log('vGws>ingle ' + vGws);
},990);
var data = {
'action': 'my_action',
'gewicht' : ajax_object.gewt,
'gesamtgewicht' : ajax_object.gewt_ges
//'whatever': ajax_object.we_value //We pass php values differently!
};
// We can also pass the url value separately from ajaxurl for front end AJAX implementations
/**/ jQuery.post(ajax_object.ajax_url, data, function(response) {
response+=gewt;
console.log('Got this from the server: weight: ' +gewt +'/ update total weight: ' + gewt_ges +' / response: ' +response);
$( ".total-weight").after('<tr id="gew_z"></tr>');
$( "#gew_z" ).html('<th>Gewicht-HardoxV1</th><td><span class="kg">'+ gewt+'kg</span></td>');
$( ".total-weight td").text(gewt_ges + " kg");
//alert('Got this from the server: ' + response);
});
});
/* var jqxhr = $.post('https://arthouse39.de/wdl/wp-content/themes/childtheme_z/test.php',{gew_hs: gew_hs}, function() {
//alert( "success" );
})
.done(function( data ) {
console.log( "Data Loaded: " + data );
//$( "#gew_z" ).html('<span class="Sendungsdaten_txt">Sendungsdaten:</span>'+ data ).show(399).delay( 3700 ).fadeOut( 700 );
})
return false;
e.preventDefault();*/
//}
window.setTimeout(function(){
jQuery(".cart_item" ).each( function( index, element ){
var array = ( jQuery( this ).html() ); //console.log('array ' + array);
if ( (array.indexOf("Hardox-500") != -1) || (array.indexOf("Hardox") != -1) ) {
var vmat=jQuery(this).find( '.variation-Materialstrkemm > p' ).text(); //console.log('ok f ' + vmat);
var vLg=jQuery(this).find( '.variation-Lngemm > p' ).text(); //console.log('ok f ' + vLg);
var vBt=jQuery(this).find( '.variation-Breitemm > p' ).text(); //console.log('ok f ' + vBt);
var vSt=jQuery(this).find( '.variation-Stck > p' ).text(); //console.log('ok f ' + vSt);
gew_h = vmat*vLg*vBt*vSt*0.000008; //console.log('gew_h ' + gew_h);
gew_h = parseFloat((gew_h).toFixed(2));
var vGw=jQuery(this).find( '.variation-Gewichtkg > p, #uni_cpo_gew_h5-field, #gewb' ).text(); //console.log('ok fgew ' + vGw);
vGW = jQuery(this).find( '.variation-Gewichtkg > p, #gewb' ).text(gew_h);
}
});
},700);
//gesamtgewicht berechnen - total weight (all products):
window.setTimeout(function(){
gewt1=parseFloat(jQuery(".total-weight td").html()); //
console.log('gewt 1: '+gewt1);
var myArray=0;
/* jQuery(".gewl" ).each( function( index, element ){
myArray =jQuery(this).find( '#gewb' ).text().replace(",", "."); */
jQuery("#gewb" ).each( function( index, element ){
myArray =jQuery(this).text().replace(",", ".");
myarray=parseFloat(myArray);console.log('myArray ' +myArray);
//gewt = gewt*1 + myArray*1;
gewt+= myArray*1;
gewt_ges=gewt1+gewt;
gewt_ges=parseFloat((gewt_ges).toFixed(2));
gewt=parseFloat((gewt).toFixed(2)); //
console.log('gewt wh...= ' + gewt);
});
/* var data = {
'action': 'my_ajax_request',
'post_type': 'POST',
'name': 'My First AJAX Request'
};
jQuery.post("", data, function(response) {
}, 'json'); */
var data = {
'action': 'my_action',
'gewicht' : ajax_object.gewt,
'gesamtgewicht' : ajax_object.gewt_ges
//'whatever': ajax_object.we_value //We pass php values differently!
};
// We can also pass the url value separately from ajaxurl for front end AJAX implementations
/**/ jQuery.post(ajax_object.ajax_url, data, function(response) {
response+=gewt;
console.log('Got this from the server: weight: ' +gewt +'/ update total weight: ' + gewt_ges +' / response: ' +response);
$( ".total-weight").after('<tr id="gew_z"></tr>');
$( "#gew_z" ).html('<th>Gewicht-HardoxV1</th><td><span class="kg">'+ gewt+'kg</span></td>');
$( ".total-weight td").text(gewt_ges + " kg");
//alert('Got this from the server: ' + response);
});
/* var jqxhr = $.post('https://arthouse39.de/wdl/wp-content/themes/childtheme_z/test.php',{gew_hs: gewt},
//var jqxhr = $.post('https://arthouse39.de/wdl/wp-content/themes/childtheme_z/functions.php',{gew_hs: gewt},
function() { //alert( "success" );//alert( gew_h );
} )
.done(function( data ) {console.log( "Data Loaded: " + data );
$( "#gew_z" ).html('<span class="Sendungsdaten_txt">Gesamtgewicht incl. Hardox.: </span>'+ data + ' kg').show(399).delay( 3700 );
//$('.total-weight').html('<th>Gewicht</th><td data-title="Total Weight"><span class="kg">'+ data+'kg</span></td>');
}); */
//
},1390);
}
} );
пример из ширины корзины настроенный товар (https://arthouse39.de/wdl/produkt/hardox-500-zuschnitt-generator-r-q-1/) в консоли:
"... Получил с сервера: weight: 177.41 / update total weight: 179.01 / response: gewicht : 0Обновление Gewicht: 0 + 0 кг177.41 "
Как включить значение в общий вес, чтобы можно было выбрать правильный способ доставки? (Перевод в общий вес уже работает ... - но, видимо, только как отображение?
Было бы здорово, если бы кто-то мог помочь, если это чего-то стоит, сделайте предложение, большое спасибо!