Pregunta sobre Developing with WordPress de Wordpress:

Actualización de Ajax

Un usuario preguntó 👇

Hola

Tengo un problema con Ajax para actualizar mis datos en la base de datos. Recibo los detalles correctos en mi llamada ajax, pero no sucede nada.

Mi código para llamar a mi función php actualizada es:

global $wpdb;
  $table_name = $wpdb->prefix . 'topbanner';

    $outPut = $wpdb->get_results(
  "
  SELECT *
  FROM $table_name
  "
);

  foreach ( $outPut as $(Hidden)_top_banner ) { ?>
?>

<script>
(function($) {
 $(document).on('click', '#submit_update<?php echo $(Hidden)_top_banner->id; ?>', function () {
   var (Hidden)_top_banner_name = tinymce.get('(Hidden)_top_banner_name<?php echo $(Hidden)_top_banner->id; ?>').getContent();
   var (Hidden)_top_banner_name_color = $('#(Hidden)_top_banner_name_color<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_text_line = $('#(Hidden)_top_banner_name_top_text_line<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_height = $('#(Hidden)_top_banner_name_top_height<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_start_date = $('#(Hidden)_top_banner_name_top_start_date<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_stop_date = $('#(Hidden)_top_banner_name_top_stop_date<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_media = $('#(Hidden)_top_banner_name_media<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_image_attachment_id = $('#(Hidden)_image_attachment_id<?php echo $(Hidden)_top_banner->id; ?>').val();

       var data = {
       (Hidden)_top_banner_name : (Hidden)_top_banner_name,
       (Hidden)_top_banner_name_color : (Hidden)_top_banner_name_color,
       (Hidden)_top_banner_name_top_text_line : (Hidden)_top_banner_name_top_text_line,
       (Hidden)_top_banner_name_top_height : (Hidden)_top_banner_name_top_height,
       (Hidden)_top_banner_name_top_start_date : (Hidden)_top_banner_name_top_start_date,
       (Hidden)_top_banner_name_top_stop_date : (Hidden)_top_banner_name_top_stop_date,
       (Hidden)_top_banner_name_media : (Hidden)_top_banner_name_media,
       (Hidden)_image_attachment_id : (Hidden)_image_attachment_id
       };
$.ajax({
    type: 'post',
    url: '<?php echo plugin_dir_url( __FILE__ ) . 'ajax_update.php'; ?>',
    data: data,
    success : function( response ){
        $('body').fadeTo(1000, '0.4');
    },
    complete : function( response ) {
        location.reload()
      console.log(data); },
      error:function(response){
alert("Fejl");
            }

});

      });
})(jQuery);
</script>
<?php
}

Mi función php para actualizar $ _POST:


define( 'WP_USE_THEMES', false );

require_once( '../../../wp-load.php' );
global $wpdb;
  $table_name = $wpdb->prefix . 'topbanner';

    $outPut = $wpdb->get_results(
  "
  SELECT *
  FROM $table_name
  "
);
  foreach ( $outPut as $(Hidden)_top_banner ) {

    $(Hidden)_top_banner_name                  = wp_kses_post($_POST['(Hidden)_top_banner_name'.$(Hidden)_top_banner->id'']);
    $(Hidden)_top_banner_name_color            = sanitize_hex_color($_POST['(Hidden)_top_banner_name_color'.$(Hidden)_top_banner->id'']);
    $(Hidden)_top_banner_name_top_text_line    = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_text_line'.$(Hidden)_top_banner->id'']);
    $(Hidden)_top_banner_name_top_height       = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_height'.$(Hidden)_top_banner->id'']);
    $(Hidden)_top_banner_name_top_start_date   = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_start_date'.$(Hidden)_top_banner->id'']);
    $(Hidden)_top_banner_name_top_stop_date    = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_stop_date'.$(Hidden)_top_banner->id'');
    $(Hidden)_top_banner_name_media            = sanitize_text_field($_POST['(Hidden)_top_banner_name_media'.$(Hidden)_top_banner->id'']);
    $(Hidden)_image_attachment_id              = sanitize_text_field($_POST['(Hidden)_image_attachment_id'.$(Hidden)_top_banner->id'']);

$wpdb->update(
  $table_name,
  array(
        '(Hidden)_top_banner_name'                   => $(Hidden)_top_banner_name,
        '(Hidden)_top_banner_name_color'             => $(Hidden)_top_banner_name_color,
        '(Hidden)_top_banner_name_top_text_line'     => $(Hidden)_top_banner_name_top_text_line,
        '(Hidden)_top_banner_name_top_height'        => $(Hidden)_top_banner_name_top_height,
        '(Hidden)_top_banner_name_top_start_date'    => $(Hidden)_top_banner_name_top_start_date,
        '(Hidden)_top_banner_name_top_stop_date'     => $(Hidden)_top_banner_name_top_stop_date,
        '(Hidden)_top_banner_name_media'             => $(Hidden)_top_banner_name_media,
        '(Hidden)_image_attachment_id'               => $(Hidden)_image_attachment_id,
  ),
  array( 'id' => $(Hidden)_top_banner->id ),
  array(
    '%s',
    '%s',
        '%s',
        '%s',
        '%s',
        '%s',
        '%s',
        '%d',
  ),
  array( '%d' )
);
}

He hecho el adelgazamiento correcto con mi ajax_insert.php, entonces funciona, no solo cuando intento actualizar.

Saludos cordiales a Morten

(@bcworkz)

Hace 1 año, 3 meses

Hacer jQuery data todavía necesitan ser serializados o convertidos en nuevos FormData protesta, como ya he explicado. ¿Quizás tu intento anterior falló por alguna otra razón? Ciertamente no funcionará a menos que aborde las capas de alguna manera. Podrías usar .post() en vez de .ajax(), es un tipo de acceso directo que presenta los objetos de datos que se le pasan.

¿Por qué quiere incluir su propio archivo PHP y wp-load.php en lugar de pasar por admin-ajax.php? Antes tenías razón, pero ahora estás haciendo Your Wrong®. No digo que no funcione, pero no es una práctica recomendada porque no es portátil a otros sitios de WP cuyos plugins y temas residen legítimamente en un lugar no estándar.

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Hola

Estoy usando admin-ajax.php ahora, te escucho; o) pero no puedo ponerlo a trabajar cuando intento actualizar. Hazlo previamente en la base de datos, con admin-ajax.php pero ahora: o /

Dice «sitios de WP cuyos plugins y temas viven legítimamente en un lugar no estándar». Me encantaría poder hacer algunas cosas bien. Así que estoy muy contento de que me ayudes aquí.

global $wpdb;
  $table_name = $wpdb->prefix . 'topbanner';

    $outPut = $wpdb->get_results(
  "
  SELECT *
  FROM $table_name
  "
);

  foreach ( $outPut as $(Hidden)_top_banner ) { ?>
?>

<script>
(function($) {
 $(document).on('click', '#submit_update<?php echo $(Hidden)_top_banner->id; ?>', function (e) {
e.preventDefault();

   var (Hidden)_top_banner_name = tinymce.get('(Hidden)_top_banner_name<?php echo $(Hidden)_top_banner->id; ?>').getContent();
   var (Hidden)_top_banner_name_color = $('#(Hidden)_top_banner_name_color<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_text_line = $('#(Hidden)_top_banner_name_top_text_line<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_height = $('#(Hidden)_top_banner_name_top_height<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_start_date = $('#(Hidden)_top_banner_name_top_start_date<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_top_stop_date = $('#(Hidden)_top_banner_name_top_stop_date<?php echo $(Hidden)_top_banner->id; ?>').val();
   var (Hidden)_top_banner_name_media = $('#(Hidden)_top_banner_name_media<?php echo $(Hidden)_top_banner->id; ?>').val();

       var data = {
         action : 'ajax_(Hidden)_update_top_banner',
         (Hidden)_top_banner_name : (Hidden)_top_banner_name,
         (Hidden)_top_banner_name_color : (Hidden)_top_banner_name_color,
         (Hidden)_top_banner_name_top_text_line : (Hidden)_top_banner_name_top_text_line,
         (Hidden)_top_banner_name_top_height : (Hidden)_top_banner_name_top_height,
         (Hidden)_top_banner_name_top_start_date : (Hidden)_top_banner_name_top_start_date,
         (Hidden)_top_banner_name_top_stop_date : (Hidden)_top_banner_name_top_stop_date,
         (Hidden)_top_banner_name_media : (Hidden)_top_banner_name_media,
       };
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_count,
    data: data,
    success : function( response ){
        $('body').fadeTo(1000, '0.4');
    },
    complete : function( response ) {
        $('body').fadeTo(1000, '1');
      console.log(data); },
      error:function(response){
alert("Fejl");
            }

});

      });
})(jQuery);
</script>
add_action('wp_ajax_ajax_(Hidden)_update_top_banner', 'ajax_(Hidden)_update_top_banner');
add_action('wp_ajax_nopriv_ajax_(Hidden)_update_top_banner', 'ajax_(Hidden)_update_top_banner');
function ajax_(Hidden)_update_top_banner() {
  global $wpdb;
    $table_name = $wpdb->prefix . 'topbanner';

      $outPut = $wpdb->get_results(
    "
    SELECT *
    FROM $table_name
    "
  );
    foreach ( $outPut as $(Hidden)_top_banner ) {

      $(Hidden)_top_banner_name                  = wp_kses_post($_POST['(Hidden)_top_banner_name'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_color            = sanitize_hex_color($_POST['(Hidden)_top_banner_name_color'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_top_text_line    = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_text_line'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_top_height       = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_height'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_top_start_date   = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_start_date'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_top_stop_date    = sanitize_text_field($_POST['(Hidden)_top_banner_name_top_stop_date'.$(Hidden)_top_banner->id]);
      $(Hidden)_top_banner_name_media            = sanitize_text_field($_POST['(Hidden)_top_banner_name_media'.$(Hidden)_top_banner->id]);
      $(Hidden)_image_attachment_id              = sanitize_text_field($_POST['(Hidden)_image_attachment_id'.$(Hidden)_top_banner->id]);

  $wpdb->update(
    $table_name,
    array(
          '(Hidden)_top_banner_name'                   => $(Hidden)_top_banner_name,
          '(Hidden)_top_banner_name_color'             => $(Hidden)_top_banner_name_color,
          '(Hidden)_top_banner_name_top_text_line'     => $(Hidden)_top_banner_name_top_text_line,
          '(Hidden)_top_banner_name_top_height'        => $(Hidden)_top_banner_name_top_height,
          '(Hidden)_top_banner_name_top_start_date'    => $(Hidden)_top_banner_name_top_start_date,
          '(Hidden)_top_banner_name_top_stop_date'     => $(Hidden)_top_banner_name_top_stop_date,
          '(Hidden)_top_banner_name_media'             => $(Hidden)_top_banner_name_media,
          '(Hidden)_image_attachment_id'               => $(Hidden)_image_attachment_id,
    ),
    array( 'id' => $(Hidden)_top_banner->id ),
    array(
      '%s',
      '%s',
          '%s',
          '%s',
          '%s',
          '%s',
          '%s',
          '%d',
    ),
    array( '%d' )
  );
  }
}

Saludos cordiales a Morten

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

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

        var (hidden)_top_banner_name                  = $('#(hidden)_top_banner_name').val();
        var (hidden)_top_banner_name_color            = $('#(hidden)_top_banner_name_color').val();
        var (hidden)_top_banner_name_top_text_line    = $('#(hidden)_top_banner_name_top_text_line').val();
        var (hidden)_top_banner_name_top_height       = $('#(hidden)_top_banner_name_top_height').val();
        var (hidden)_top_banner_name_top_start_date   = $('#(hidden)_top_banner_name_top_start_date').val();
        var (hidden)_top_banner_name_top_stop_date    = $('#(hidden)_top_banner_name_top_stop_date').val();
        var (hidden)_top_banner_name_media            = $('#(hidden)_top_banner_name_media').val();
        var (hidden)_image_attachment_id              = $('#(hidden)_image_attachment_id').val();

        var data = {
            action: 'ajax_insert_(hidden)_top_banner',
            (hidden)_top_banner_name : (hidden)_top_banner_name,
            (hidden)_top_banner_name_color : (hidden)_top_banner_name_color,
            (hidden)_top_banner_name_top_text_line : (hidden)_top_banner_name_top_text_line,
            (hidden)_top_banner_name_top_height : (hidden)_top_banner_name_top_height,
            (hidden)_top_banner_name_top_start_date : (hidden)_top_banner_name_top_start_date,
            (hidden)_top_banner_name_top_stop_date : (hidden)_top_banner_name_top_stop_date,
            (hidden)_top_banner_name_media : (hidden)_top_banner_name_media,
            (hidden)_image_attachment_id : (hidden)_image_attachment_id,
        };
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: $('#insert_form_data').serialize(),
    beforeSend: function( response ) {
        // setting a timeout
        $('body').fadeTo(1000, '0.4');
    },
    success : function( response ){
        $('body').fadeTo(1000, '0.4');
    },
    complete: function( response ) {
         $('body').fadeTo(4000, '1');
        console.log(data); },
    error : function( response ){
        alert("fejl")

    }
});

      });
})(jQuery);

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Hola

intenté esto

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

        // Get form
        var form = $('#insert_form_data')[0];

       // Create an FormData object
        var data = new FormData(form);
        data.append("action", "ajax_insert_(hidden)_top_banner");
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    enctype: 'multipart/form-data',
    data: data,
    cache: false,
    contentType: false,
    processData: false,
    timeout: 800000,
    beforeSend: function( response ) {
        // setting a timeout
        $('#contact-msg').html("Loading...")
    },
    success: function (data) {

                $("#contact-msg").text(data);

            },
    complete: function( response ) {

         $('body').fadeTo(4000, '1');
        console.log(data); },
    error : function( response ){
        alert("fejl")

    }
});

      });
})(jQuery);

Pero también viene con todas las páginas de cada código.

Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses.

(@bcworkz)

Hace 1 año, 3 meses

¿Qué código ves en las páginas?

Verifica que su controlador PHP sea al menos Ajax. Ingrese algo como echo 'Ajax handler was reached'; como la primera línea dentro de la declaración funcional. La salida en la consola de su navegador debe indicar si los valores de actividad y ajax.url son correctos.

También debe ingresar un código para confirmar que el usuario actual está conectado y tiene permiso para cambiar la tabla. Algo como:
if ( ! current_user_can('manage_options')) wp_die('Invalid user permissions');
Además, debe proporcionar un nonce para jQuery similar a cómo se proporciona ajax_url. Ingrese el nonce como parte de los datos de Ajax y verifique que sea correcto en el controlador de Ajax. No es necesario hacer esto ahora, pero debería instalarlo una vez que tenga algunas funciones básicas.

La función del controlador Ajax debe llamar wp_die(); o similar al final. Probablemente haya más, pero la primera tarea es simplemente preguntar y obtener una respuesta que funcione correctamente. Una vez que eso funciona, todo lo demás suele encajar sin demasiado alboroto.

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Hola, encuentro mis valores en mi consola. Pero no en mi base de datos.

El texto que obtengo cuando trato de hacer formdata es todo tekst en la página. Eks. Enlace y así sucesivamente.

Todo lo mejor para Morten

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Esto es si prueba el formdata http://www.w3.org/1999/xhtml ”; class = «ie8 wp-toolbar» lang = «da-DK»> http://www.w3.org/1999/xhtml ”; class = «wp-toolbar» lang = «da-DK»>

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

así que tengo que configurar uset () y obtener algo de salida

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

       // Create an FormData object
       var form_data = $( "#insert_form_data" ).serialize();
    $( "#results" ).text( form_data );
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: {
      action: 'ajax_insert_teenstyle_top_banner',
      form_data: form_data},
    cache: false,
    processData: false,
    contentType: false,
    beforeSend: function( response ) {
        // setting a timeout
        $('#contact-msg').html("Loading...")
    },
    success: function (form_data) {
          console.log(form_data);
            },
    complete: function( response ) {

         $('body').fadeTo(4000, '1');
         },
    error : function( response ){
        alert("fejl")

    }
});

      });
})(jQuery);

salida: ajax_count.js? ver = 5.2.4: 30 (oculto) _top_banner_name = & (oculto) _top_banner_name_color =% 23c9c9c9 & (oculto) _top_banner_name_media = & (oculto) _image_attachment_id = & (oculto) _top_banner_top_te_toptetopte_top -11-2019_name_stop_date -2019

Aquí está mi función:

<?php
add_action('wp_ajax_ajax_(hidden)_update_top_banner', 'ajax_(hidden)_update_top_banner');
add_action('wp_ajax_nopriv_ajax_(hidden)_update_top_banner', 'ajax_(hidden)_update_top_banner');
function ajax_(hidden)_update_top_banner() {
  echo 'Ajax handler was reached';
  global $wpdb;
    $table_name = $wpdb->prefix . 'topbanner';

      $outPut = $wpdb->get_results(
    "
    SELECT *
    FROM $table_name
    "
  );
    foreach ( $outPut as $(hidden)_top_banner ) {

      $(hidden)_top_banner_name                  = wp_kses_post($_POST['(hidden)_top_banner_name'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_color            = sanitize_hex_color($_POST['(hidden)_top_banner_name_color'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_top_text_line    = sanitize_text_field($_POST['(hidden)_top_banner_name_top_text_line'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_top_height       = sanitize_text_field($_POST['(hidden)_top_banner_name_top_height'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_top_start_date   = sanitize_text_field($_POST['(hidden)_top_banner_name_top_start_date'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_top_stop_date    = sanitize_text_field($_POST['(hidden)_top_banner_name_top_stop_date'.$(hidden)_top_banner->id]);
      $(hidden)_top_banner_name_media            = sanitize_text_field($_POST['(hidden)_top_banner_name_media'.$(hidden)_top_banner->id]);
      $(hidden)_image_attachment_id              = sanitize_text_field($_POST['(hidden)_image_attachment_id'.$(hidden)_top_banner->id]);

  $wpdb->update(
    $table_name,
    array(
          '(hidden)_top_banner_name'                   => $(hidden)_top_banner_name,
          '(hidden)_top_banner_name_color'             => $(hidden)_top_banner_name_color,
          '(hidden)_top_banner_name_top_text_line'     => $(hidden)_top_banner_name_top_text_line,
          '(hidden)_top_banner_name_top_height'        => $(hidden)_top_banner_name_top_height,
          '(hidden)_top_banner_name_top_start_date'    => $(hidden)_top_banner_name_top_start_date,
          '(hidden)_top_banner_name_top_stop_date'     => $(hidden)_top_banner_name_top_stop_date,
          '(hidden)_top_banner_name_media'             => $(hidden)_top_banner_name_media,
          '(hidden)_image_attachment_id'               => $(hidden)_image_attachment_id,
    ),
    array( 'id' => $(hidden)_top_banner->id ),
    array(
      '%s',
      '%s',
          '%s',
          '%s',
          '%s',
          '%s',
          '%s',
          '%d',
    ),
    array( '%d' )
  );
  }
  print_r($_POST);
  wp_die();
}

Mi forma:

<div>
<form method="post" id="insert_form_data" enctype="multipart/form-data">

    <div class="plugin_(hidden)_banner">

        <div><label for="(hidden)_top_banner_name"><b>Banner tekst</b></label></div>
        <?php

                  $(hidden)_top_banner_name = $(hidden)_top_banner->(hidden)_top_banner_name;
        wp_editor( $(hidden)_top_banner_name, '(hidden)_top_banner_name', array(
            'wpautop'       => true,
            'media_buttons' => true,
            'textarea_rows' => 1,
        ) );?>
    </div>
    <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" id="(hidden)_top_banner_name_color<?php echo $(hidden)_top_banner->id; ?>" value="" /></div>
        <label><b>Baggrundsbillede</b></label>
        <div class='image-preview-wrapper'>
			<img id='image-preview' src='<?php echo wp_get_attachment_url( $(hidden)_top_banner->(hidden)_top_banner_name_media  ); ?>' width='100%'>
		</div>
        <input hidden name="(hidden)_top_banner_name_media" id="(hidden)_top_banner_name_media" value="<?php echo wp_get_attachment_url( $(hidden)_top_banner->(hidden)_top_banner_name_media  ); ?>"/>

		<input id="upload_image_button" name="upload_image_button<?php echo $(hidden)_top_banner->id; ?>" type="button" class="button" value="<?php _e( 'Upload banner billede' ); ?>" />
<label><b>Vis billede</b></label>
		<input type='checkbox' name='(hidden)_image_attachment_id' id='(hidden)_image_attachment_id' value='' 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" id="(hidden)_top_banner_name_top_height" value="">
<div><b>Tekst linje højde</b></div>
        <input type="text" size="4" name="(hidden)_top_banner_name_top_text_line" id="(hidden)_top_banner_name_top_text_line" value="">
        <div><b>Start</b></div>
        <input type="text" class="date_picker plugin_(hidden)_top_banner_dato" name="(hidden)_top_banner_name_top_start_date" id="(hidden)_top_banner_name_top_start_date" value="">
        <div><b>Slut</b></div>
        <input type="text" class="date_picker plugin_(hidden)_top_banner_dato" name="(hidden)_top_banner_name_top_stop_date" id="(hidden)_top_banner_name_top_stop_date" value=""><br><br>
		<input type="submit" name="insert_submit" id="insert_submit" value="Tilføj banner" class="button-primary">
	</div>

        </form>
        <div id="results">

        </div>
</div>

No obtengo ningún resultado de una función y no sé dónde debería obtenerlos.

Todo lo mejor para Morten

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

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

       // Create an FormData object
       var form_data = $( "#insert_form_data" ).serialize();
                        $( "#results" ).text( form_data );
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: {
      action: 'ajax_insert_(hidden)_top_banner',
      (hidden)_top_banner_name : (hidden)_top_banner_name,
      (hidden)_top_banner_name_color : (hidden)_top_banner_name_color,
      (hidden)_top_banner_name_top_text_line : (hidden)_top_banner_name_top_text_line,
      (hidden)_top_banner_name_top_height : (hidden)_top_banner_name_top_height,
      (hidden)_top_banner_name_top_start_date : (hidden)_top_banner_name_top_start_date,
      (hidden)_top_banner_name_top_stop_date : (hidden)_top_banner_name_top_stop_date,
      (hidden)_top_banner_name_media : (hidden)_top_banner_name_media,
      (hidden)_image_attachment_id : (hidden)_image_attachment_id},
    cache: false,
    processData: false,
    contentType: false,
    beforeSend: function( response ) {
        // setting a timeout
        $('#contact-msg').html("Loading...")
    },
    success: function (response) {
        console.log(form_data);
            },
    complete: function( response ) {

         $('body').fadeTo(4000, '1');
         },
    error : function( response ){
        alert("fejl")

    }
});

      });
})(jQuery);

Entonces ahora obtengo una línea limpia: salida: ajax_count.js? Ver = 5.2.4: 30 (oculto) _top_banner_name = & (oculto) _top_banner_name_color =% 23c9c9c9 & (oculto) _top_banner_name_media = & (oculto) _image_attachment_id = & (oculto_ _____ = 28 & (oculto) _namet_banner_top_b_ 1.8 & (oculto) _namet_banner_top_b_ 1.8 & (hidden) _top_banner_name_top_start_date = 11-11-2019 & (oculto) _top_banner_name_top_stop_date = 12-11-2019

Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Inserte la función en ajax pero no funciona:

<?php
add_action('wp_ajax_ajax_ajax_(hidden)_insert_top_banner', 'ajax_(hidden)_insert_top_banner');
add_action('wp_ajax_nopriv_ajax_(hidden)_insert_top_banner', 'ajax_(hidden)_insert_top_banner');

function ajax_(hidden)_insert_top_banner() {
  echo 'Ajax handler was reached';
global $wpdb;
  $table_name = $wpdb->prefix . "topbanner";

    global $wpdb;

    $(hidden)_top_banner_name                  = wp_kses_post($_POST['(hidden)_top_banner_name']);
    $(hidden)_top_banner_name_color            = sanitize_hex_color($_POST['(hidden)_top_banner_name_color']);
    $(hidden)_top_banner_name_top_text_line    = sanitize_text_field($_POST['(hidden)_top_banner_name_top_text_line']);
    $(hidden)_top_banner_name_top_height       = sanitize_text_field($_POST['(hidden)_top_banner_name_top_height']);
    $(hidden)_top_banner_name_top_start_date   = sanitize_text_field($_POST['(hidden)_top_banner_name_top_start_date']);
    $(hidden)_top_banner_name_top_stop_date    = sanitize_text_field($_POST['(hidden)_top_banner_name_top_stop_date']);
    $(hidden)_top_banner_name_media            = sanitize_text_field($_POST['(hidden)_top_banner_name_media']);
    $(hidden)_image_attachment_id              = sanitize_text_field($_POST['(hidden)_image_attachment_id']);

$wpdb->query($wpdb->prepare(
	"
		INSERT INTO $table_name
        ( (hidden)_top_banner_name, (hidden)_top_banner_name_color, (hidden)_top_banner_name_top_text_line, (hidden)_top_banner_name_top_height, (hidden)_top_banner_name_top_start_date, (hidden)_top_banner_name_top_stop_date, (hidden)_top_banner_name_media, (hidden)_image_attachment_id )
		VALUES ( %s, %s, %s, %s, %s, %s, %s, %d )
	",
    array(
        $(hidden)_top_banner_name,
        $(hidden)_top_banner_name_color,
        $(hidden)_top_banner_name_top_text_line,
        $(hidden)_top_banner_name_top_height,
        $(hidden)_top_banner_name_top_start_date,
        $(hidden)_top_banner_name_top_stop_date,
        $(hidden)_top_banner_name_media,
        $(hidden)_image_attachment_id
        )
)

);
    print_r($_POST);
    wp_die();
  } ?>

Esta respuesta fue modificada hace 1 año, 3 meses.

(@bcworkz)

Hace 1 año, 3 meses

La salida de jQuery al configurar .text () no es muy informativa desde mi punto de vista, lo que está registrado en la consola del navegador, si lo hay, es informativo. OTOH no hace daño si le resulta útil. .Serialize () es el enfoque correcto si desea ingresar la entrada desde un formulario, pero luego no puede ingresar fácilmente el valor de la acción. Para incluir el valor de la acción en los datos enviados al servidor, oculte un campo de entrada llamado «acción» con su formulario HTML al que se le asigna el valor deseado.

Cuando aplique un nonce, incluya también este valor como un campo oculto. Es un poco más simple si el nombre de dominio es «_ajax_nonce» porque WP detecta esto automáticamente cuando verifica el nonce en PHP.

Con los campos adicionales ocultos, esto es bueno: var form_data = $( "#insert_form_data" ).serialize();

En la llamada .ajax (), pase los datos en serie: data: form_data,
Entonces debería ver al menos la respuesta del servidor en la consola de su navegador.

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Hola

Ahora está esto en la consola: action = ajax_insert_ (hidden) _top_banner & (hidden) _top_banner_name = & (hidden) _top_banner_name_color =% 23dd9933 & (hidden) _top_banner_name_media = http% 3A% 2F% 2Flocalhost% 2Fpressw 2Fuploads% 2F11 .png & (oculto) _image_attachment_id = 115 & (oculto) _top_banner_name_top_height = 28 & (oculto) _top_banner_name_top_text_line = 1.8 & (oculto) _topb

Todo lo mejor para Morten

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

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

       var form_data = $( "#insert_form_data" ).serialize();
$.ajax({
    type: 'post',
    url: ajaxurl.ajax_url,
    data: form_data,
    beforeSend: function( response ) {
        // setting a timeout
        $('#results').html("Loading...")
    },
    success: function (data) {
        console.log(form_data);
            },
    complete: function( response ) {

         $('body').fadeTo(4000, '1');
         },
    error : function( response ){
        alert("fejl")

    }
});

      });
})(jQuery);

(@bcworkz)

Hace 1 año, 3 meses

¡Okey! Ese contenido de la consola provino de su controlador PHP Ajax, por lo que los datos hicieron un viaje de ida y vuelta y muestran que la parte Ajax está funcionando como se esperaba. ¡Razón para celebrar en sí misma!

Ahora podemos centrarnos en por qué la tabla INSERT no funciona. Elimine cualquier línea de eco existente o print_r () del controlador Ajax. Ahora tenemos algo más para enviar a una consola. Agregar echo $wpdb->last_query; justo antes del wp_die(); línea.

Inicie sesión en phpMyAdmin y navegue hasta su SS. Si ya tiene datos importantes en la tabla, le recomiendo que exporte un archivo de respaldo por seguridad. Vaya a la pestaña SQL de la base de datos. Vuelva a ingresar el formulario para activar el código Ajax. Asegúrese de que el cable last_query que aparece en la consola sea el que esperaba. Copie la cadena last_query de la consola y péguela en el campo Ejecutar SQL de la pestaña SQL en phpMyAdmin. Haga clic en Ir.

La consulta o phpMyAdmin con éxito le dará una mejor idea de lo que está mal en la consulta.

Otra cosa que podría intentar si tiene problemas con su consulta SQL es usar wpdb-> insert () en su lugar. No es necesario preparar () porque se hace internamente con este método. Esto requerirá una reorganización de cómo se codifican sus campos y datos para que estén estructurados según sea necesario y descritos en la página de documentos vinculada.

Lanzador de hilos

(@mortenamdk)

Hace 1 año, 3 meses

Hola

No veo una salida de eco, pero si tomo el controlador, puedo verlo, eks. Entre

function (hidden)_top_banner_option_page() { ?>

<?php (hidden)_show_update_teenstyle_banner(); ?>
<?php (hidden)_insert_top_banner(); ?>
<?php (hidden)_delete_top_banner(); ?>
<strong><?php ajax_(hidden)_insert_top_banner(); ?></strong>
<?php }

Puedo ver el resultado INSERT INTO wp_topbanner ((oculto) _top_banner_name, (oculto) _top_banner_name_color, (oculto) _top_banner_name_top_text_line, (oculto) _top_banner_name_top_height, (oculto) _topda _topda _topda _topda _topda ‘, 1.8’ -10-2019 ′, ’19 -10-2019 ′, ”, 0)

No hay nada en una consola

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.