Pregunta sobre Developing with WordPress de Wordpress:

Se necesita Ajax para actualizar mi p谩gina de administraci贸n sin recargar

Un usuario pregunt贸 馃憞

Hola

Necesita ayuda para actualizar la p谩gina de administraci贸n de estilo Ajax; o)

Aqu铆 est谩 mi funci贸n Php:

function l_next_top_count_callback() {
    global $wpdb;
    $next_top_count = intval($_POST['next_top_count']);
    echo $next_top_count;

            wp_die();
}
add_action('wp_ajax_l_next_top_count_callback', 'l_next_top_count_callback');
add_action('wp_ajax_nopriv_l_next_top_count_callback', 'l_next_top_count_callback');

Esta es mi acci贸n jQuery ajax:

(function($) {
$(document).ready(function() {

      $('#next_top_count').on('click',function(e){
        e.preventDefault();

        var next_top_count = $("#next_top_count").val();
        var data = {
            action: 'l_next_top_count_callback',
            next_top_count: next_top_count,
        };
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: data,
    success : function( response ){ console.log(data); },
    error : function( response ){
        alert("fejl")
        
    }
});

      });
   
  });
})(jQuery);

Mi funci贸n update_option es:

add_option( 'next_top_count_', '');
   register_setting( 'next_top_count_group', 'next_top_count', 'next_top_count_callback' );

Mi llamada wp-admin.php:

wp_localize_script( 'ajax_count', 'ajaxurl', admin_url( 'admin-ajax.php' ) );
wp_enqueue_script( 'ajax_count' );

Mi c贸digo est谩 funcionando con la base de datos: o)

Pero, mi options-general.php no se actualiza sin la actualizaci贸n de f5. Con suerte, Ajax lo automatizar谩 para que mi bucle pueda hacer el trabajo. aqu铆 est谩 el bucle de bucle:

 for ($next_top = 0; $next_top <= get_option( 'next_top_count_' ); $next_top++) {

	// Save attachment ID
    if ( 
    isset($_POST['(hidden)_top_banner_name'.$next_top.'']) || 
    isset($_POST['(hidden)_top_banner_name_color'.$next_top.'']) || 
    isset($_POST['(hidden)_top_banner_name_top_height'.$next_top.'']) || 
    isset($_POST['(hidden)_top_banner_name_top_text_line'.$next_top.'']) || 
    isset($_POST['(hidden)_top_banner_name_top_start_date'.$next_top.'']) || 
    isset($_POST['(hidden)_top_banner_name_top_stop_date'.$next_top.'']) || 
    isset( $_POST['submit_image_selector'.$next_top.''] ) && 
    isset( $_POST['image_attachment_id'.$next_top.''] ) ) :
		update_option( 'media_selector_attachment_id'.$next_top.'', absint( $_POST['image_attachment_id'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name_color'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name_color'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name_top_height'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name_top_height'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name_top_text_line'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name_top_text_line'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name_top_start_date'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name_top_start_date'.$next_top.''] ) );
        update_option( '(hidden)_top_banner_name_top_stop_date'.$next_top.'', wp_kses_post( $_POST['(hidden)_top_banner_name_top_stop_date'.$next_top.''] ) );

	endif;

	wp_enqueue_media();

	?>
<div class="plugin_box">
<form method='post'>
    <div class="plugin_(hidden)_banner">
      
        <div><label for="(hidden)_top_banner_name<?php echo $next_top; ?>"><b>Banner tekst</b></label></div>
        <?php settings_fields( '(hidden)_top_banner_group' );

        
                  $(hidden)_top_banner_name = get_option('(hidden)_top_banner_name'.$next_top.'');
        wp_editor( $(hidden)_top_banner_name, '(hidden)_top_banner_name'.$next_top.'', array(
            'wpautop'       => true,
            'media_buttons' => true,
            'textarea_rows' => 1,
        ) );?>
    </div>
  
      <style>
          body.settings_page_(hidden)_top_banner .wp-editor-wrap {
            width: 76%;
            float: right;
        }
          .plugin_(hidden)_top_banner {
              float: left;
              width: 22%;
        }
          .plugin_box {
            display: flow-root;
            padding-top: 1em;
        }
          .plugin_(hidden)_top_banner_dato {
            width: 85px;  
        }
    </style>
    <div class="plugin_(hidden)_top_banner">
      <div><label><b>Baggrundsfarve</b><br></label><input type="text" class="color-picker" data-alpha="true" name="(hidden)_top_banner_name_color<?php echo $next_top; ?>" id="(hidden)_top_banner_name_color<?php echo $next_top; ?>" value="<?php echo get_option( '(hidden)_top_banner_name_color'.$next_top.'' ); ?>" /></div>
        <label><b>Baggrundsbillede</b></label>
        <div class='image-preview-wrapper<?php echo $next_top; ?>'>
			<img id='image-preview<?php echo $next_top; ?>' src='<?php echo wp_get_attachment_url( get_option( 'media_selector_attachment_id'.$next_top.'' ) ); ?>' width='100%'>
		</div>
		<input id="upload_image_button<?php echo $next_top; ?>" type="button" class="button" value="<?php _e( 'Upload banner billede' ); ?>" />
<label><b>Vis billede</b></label>
		<input type='checkbox' name='image_attachment_id<?php echo $next_top; ?>' id='image_attachment_id<?php echo $next_top; ?>' value='<?php echo get_option( 'media_selector_attachment_id'.$next_top.'' ); ?>' checked><br><br>
<div><b>Height p氓 banner linjen</b></div>
        <input type="number" maxlength="4" size="4" name="(hidden)_top_banner_name_top_height<?php echo $next_top; ?>" id="(hidden)_top_banner_name_top_height<?php echo $next_top; ?>" value="<?php echo get_option( '(hidden)_top_banner_name_top_height'.$next_top.'', '28' ) ?>">
<div><b>Tekst linje h酶jde</b></div>
        <input type="text" size="4" name="(hidden)_top_banner_name_top_text_line<?php echo $next_top; ?>" id="(hidden)_top_banner_name_top_text_line<?php echo $next_top; ?>" value="<?php echo get_option( '(hidden)_top_banner_name_top_text_line'.$next_top.'', '1.8' ) ?>">
        <div><b>Start</b></div>
        <input type="text" class="date_picker plugin_(hidden)_top_banner_dato" name="(hidden)_top_banner_name_top_start_date<?php echo $next_top; ?>" id="(hidden)_top_banner_name_top_start_date<?php echo $next_top; ?>" value="<?php echo get_option( '(hidden)_top_banner_name_top_start_date'.$next_top.'' ) ?>">
        <div><b>Slut</b></div>
        <input type="text" class="date_picker plugin_(hidden)_top_banner_dato" name="(hidden)_top_banner_name_top_stop_date<?php echo $next_top; ?>" id="(hidden)_top_banner_name_top_stop_date<?php echo $next_top; ?>'" value="<?php echo get_option( '(hidden)_top_banner_name_top_stop_date'.$next_top.'' ) ?>"><br><br>
		<input type="submit" name="submit_image_selector<?php echo $next_top; ?>" value="Gem 忙ndringer" class="button-primary">
	</div>
        </form>
    </div>
<hr>
    <?php
    
    }

Todo este trabajo, pero no antes de que actualice la p谩gina. No hay forma de hacer eso con ajax, y c贸mo lo hago, intento esto mucho pero no puedo hacerlo funcionar, uso Google a menudo, no puedo seguir adelante, necesito Necesito ayuda para hacer esto.

Espero tu ayuda

Ya no tengo ese pelo tan grande: oD

Saludos cordiales a Morten

(@bcworkz)

Hace 1 a帽o, 2 meses

S贸lo puede localizar scripts despu茅s de que el script haya sido 馃槈 Invierta las l铆neas de la llamada 鈥渨p-admin.php鈥.

(@mortenamdk)

Hace 1 a帽o, 2 meses

Jeje wp-admin significa wp-ajax 馃槉 Gracias, lo intentar茅. Pero lo curioso es que mi trabajo de c贸digo encuentra los datos en la base de datos pero el bucle for no responde.

(@mortenamdk)

Hace 1 a帽o, 2 meses

Lo intento pero nada cambia. 驴Hay algo m谩s que pueda probar?

(@bcworkz)

Hace 1 a帽o, 2 meses

En el script de localizaci贸n, intente admin_url( 'admin-ajax.php?action=l_next_top_count_callback' )
No estoy seguro de cu谩l es el problema con arbitrario data: adelante a .ajax(), pero no como admin – ajax.php. Funciona perfectamente cuando se pasa como un campo de formulario.

Del mismo modo, puede haber un problema con $_POST['next_top_count']. Para asegurarse de que algo vuelva a .ajax(), ahora mismo print_r($_POST); como resultado de su devoluci贸n de llamada y exam铆nelo con alert(). Por supuesto, esto no conducir谩 su bucle correctamente, pero deber铆a comprender c贸mo acceder a los datos pasados.

(@mortenamdk)

Hace 1 a帽o, 2 meses

Hola

Buena idea, intentar茅 eso y volver茅 cuando tenga una cita. Muchas gracias por tu tiempo y ayuda.

Todo lo mejor para Morten

(@mortenamdk)

Hace 1 a帽o, 1 mes

Hola

As铆 que trato de hacerlo, cuando doy esta advertencia, mis datos aparecen como deber铆an. Esto es lo que hice, para el resultado:

(function($) {
$(document).ready(function() {

      $('#next_top_count').on('click',function(e){
        e.preventDefault();

        var next_top_count = $("#next_top_count").val();
        var data = {
            action: 'l_next_top_count_callback',
            next_top_count: next_top_count,
        };
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: data,
    beforeSend: function( response ) {
        <strong>alert(next_top_count);</strong>
        $('body').fadeTo(1000, '0.4');
    },
    success : function( response ){
        $('body').fadeTo(1000, '0.4');
    },
    complete: function( response ) {
         $('body').load('options-general.php?page=teenstyle_top_banner', 'body'); 
         $('body').fadeTo(4000, '1');
        console.log(data); },
    error : function( response ){
        alert("fejl")
        
    }
});

      });
   
  });
})(jQuery);

Pero hay algo que no entiendo, no creo que mi recuerdo haga algo en lo que no veo ning煤n cambio. 驴Y si mi devoluci贸n de llamada funciona?

function l_next_top_count_callback() {
    global $wpdb;
    $next_top_count = isset($_POST['next_top_count']) ? update_option( 'next_top_count_', absint( $_POST['next_top_count'] )) : 'N/A';
    echo $next_top_count;

            wp_die();
}
add_action('wp_ajax_l_next_top_count_callback', 'l_next_top_count_callback');
add_action('wp_ajax_nopriv_l_next_top_count_callback', 'l_next_top_count_callback');

(@mortenamdk)

Hace 1 a帽o, 1 mes

Cuando quiero ver alg煤n resultado de la funci贸n l_next_top_count_callback () Viene con NA, as铆 que tengo un problema, entonces tal vez no tenga un enlace en wp-ajax.php

(@mortenamdk)

Hace 1 a帽o, 1 mes

matriz (tama帽o = 0) vac铆a

Hice var_dump en $ _POST Estaba vac铆o

He intentado algo como esto, Ajax no metode pero funciona.

(function($) {
$(document).ready(function() {

      $('#next_top_count').on('click',function(e){
        e.preventDefault();

        var next_top_count = $("#next_top_count").val();
        var data = {
            action: 'l_next_top_count_callback',
            next_top_count: next_top_count,
        };
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: data,
    beforeSend: function( response ) {
        // setting a timeout
        $('body').fadeTo(1000, '0.4');
    },
    success : function( response ){
        $('body').fadeTo(1000, '0.4');
    },
    complete: function( response ) {
         $('body').load('options-general.php?page=teenstyle_top_banner', 'body'); 
         $('body').fadeTo(4000, '1');
        console.log(data); },
    error : function( response ){
        alert("fejl")
        
    }
});

      });
   
  });
})(jQuery);

Pero espero poder hacer esto con Ajax para que mejore.

Tambi茅n he probado esto:

function l_next_top_count_callback() {
    $next_top_count = $_POST['next_top_count'];
    echo $next_top_count;
    
            wp_die();
}
add_action('wp_ajax_l_next_top_count_callback', 'l_next_top_count_callback');
add_action('wp_ajax_nopriv_l_next_top_count_callback', 'l_next_top_count_callback');

(@bcworkz)

Hace 1 a帽o, 1 mes

No estoy seguro de cu谩l es el problema real con el reenv铆o de datos de objetos arbitrarios a .ajax (). Funciona perfectamente con .post (), as铆 que siempre lo he usado, en lugar de tratar de arreglar lo mismo con .ajax (). Si necesita usar .ajax (), intente convertir su objeto de datos a uno nuevo FormData, ya que el env铆o de formularios con .ajax () parece funcionar perfectamente.

(@mortenamdk)

Hace 1 a帽o, 1 mes

Gracias intentar茅: o) Y gracias por tu tiempo para ayudarme.

Cierro este tema ahora.

Saludos cordiales a Morten

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *