Pergunta sobre o desenvolvimento com WordPress do WordPress: Atualização do Ajax

Um usuário perguntou ?

Olá

Estou com um problema com o Ajax para atualizar meus dados no banco de dados. Estou recebendo os detalhes corretos na minha chamada ajax, mas nada acontece.

Meu código para chamar minha função php atualizada é:

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
}

Minha função php para atualizar $_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' )
);
}

Fiz o desbaste correto com meu ajax_insert.php, então funciona, não só quando tento atualizar.

Atenciosamente Morten

(@bcworkz)

1 ano, 3 meses atrás

fazer jquery data eles ainda precisam ser serializados ou convertidos para novos FormData protesto, como já expliquei. Talvez sua tentativa anterior tenha falhado por algum outro motivo? Certamente não funcionará a menos que você aborde as camadas de alguma forma. você poderia usar .post() em vez de .ajax()é um tipo de atalho que renderiza os objetos de dados passados ​​a ele.

Por que você deseja incluir seu próprio arquivo PHP e wp-load.php em vez de passar por admin-ajax.php? Você estava certo antes, mas agora está fazendo o Seu Errado®. Não estou dizendo que não funciona, mas não é uma prática recomendada porque não é portátil para outros sites WP cujos plugins e temas residem legitimamente em um local não padrão.

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Olá

Estou usando admin-ajax.php agora, estou ouvindo; o), mas não consigo fazê-lo funcionar quando tento atualizar. Faça isso anteriormente no banco de dados, com admin-ajax.php mas agora: o/

Ele diz “sites WP cujos plugins e temas vivem legitimamente em um local não padrão”. Eu adoraria ser capaz de fazer algumas coisas bem. Então, estou muito feliz que você me ajude aqui.

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' )
  );
  }
}

Atenciosamente Morten

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

(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);

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Olá

eu tentei isso

(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);

Mas também vem com todas as páginas de cada código.

Esta resposta foi modificada há 1 ano e 3 meses. Esta resposta foi modificada há 1 ano e 3 meses.

(@bcworkz)

1 ano, 3 meses atrás

Que código você vê nas páginas?

Verifique se seu manipulador PHP é pelo menos Ajax. Digite algo como echo 'Ajax handler was reached'; como a primeira linha dentro da declaração funcional. A saída do console do seu navegador deve indicar se os valores activity e ajax.url estão corretos.

Você também deve inserir um código para confirmar que o usuário atual está conectado e tem permissão para alterar a tabela. Algo parecido:
if ( ! current_user_can('manage_options')) wp_die('Invalid user permissions');

Além disso, você precisa fornecer um nonce para jQuery semelhante a como ajax_url é fornecido. Insira o nonce como parte dos dados ajax e verifique se está correto no controlador ajax. Você não precisa fazer isso agora, mas deve instalá-lo assim que tiver algumas funcionalidades básicas.

A função do controlador Ajax deve chamar wp_die(); ou similar no final. Provavelmente há mais, mas a primeira tarefa é simplesmente perguntar e obter uma resposta que funcione corretamente. Uma vez que isso funciona, todo o resto geralmente se encaixa sem muito barulho.

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Olá, encontro meus valores no meu console. Mas não no meu banco de dados.

O texto que recebo quando tento fazer formdata é todo texto na página. Ex. Liga e assim por diante.

Tudo de bom para o Morten

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Isso se você tentar o formdata ”; class = “ie8 wp-toolbar” lang = “da-DK”> ”; class = “wp-toolbar” lang = “da-DK”>

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

então eu tenho que definir uset() e obter alguma saída

(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);

saída: 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

Aqui está minha função:

<?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();
}

O meu caminho:

<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=" 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=" 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>

Não estou obtendo nenhum resultado de uma função e não sei onde devo obtê-los.

Tudo de bom para o Morten

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

(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);

Então agora eu recebo uma linha limpa: output: ajax_count.js? Visualizar=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&top(oculto)_1.8_banner_ner) & (oculto) _top_banner_name_top_start_date = 11-11-2019 & (oculto) _top_banner_name_top_stop_date = 12-11-2019

Esta resposta foi modificada há 1 ano e 3 meses. Esta resposta foi modificada há 1 ano e 3 meses. lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Inserir função em ajax, mas não 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 resposta foi modificada há 1 ano e 3 meses.

(@bcworkz)

1 ano, 3 meses atrás

A saída do jQuery ao configurar .text() não é muito informativa do meu ponto de vista, o que está logado no console do navegador, se houver, é informativo. OTOH não faz mal se você achar útil. .Serialize() é a abordagem correta se você deseja inserir a partir de um formulário, mas não pode inserir facilmente o valor da ação. Para incluir o valor da ação nos dados enviados ao servidor, oculte um campo de entrada chamado “ação” com seu formulário HTML ao qual está atribuído o valor desejado.

Ao aplicar um nonce, inclua também esse valor como um campo oculto. É um pouco mais simples se o nome de domínio for “_ajax_nonce” porque o WP detecta isso automaticamente ao verificar o nonce no PHP.

Com os campos extras ocultos, isso é bom: var form_data = $( "#insert_form_data" ).serialize();

Na chamada .ajax(), passe os dados em série: data: form_data,

Então você deve pelo menos ver a resposta do servidor no console do seu navegador.

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Olá

Agora existe isso no console: 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

Tudo de bom para o Morten

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

(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)

1 ano, 3 meses atrás

OK! Esse conteúdo do console veio do seu manipulador PHP Ajax, então os dados fizeram uma viagem de ida e volta e mostram que a parte Ajax está funcionando conforme o esperado. Motivo para comemorar em si!

Agora podemos nos concentrar no motivo pelo qual a tabela INSERT não está funcionando. Remova quaisquer linhas de eco existentes ou print_r() do controlador Ajax. Agora temos outra coisa para enviar para um console. Adicionar echo $wpdb->last_query; pouco antes do wp_die(); linha.

Faça login no phpMyAdmin e navegue até o seu SS. Se você já possui dados importantes na tabela, recomendo exportar um arquivo de backup por segurança. Vá para a guia SQL do banco de dados. Digite novamente o formulário para ativar o código Ajax. Certifique-se de que o fio last_query que aparece no console seja o que você espera. Copie a string last_query do console e cole-a no campo Execute SQL da guia SQL no phpMyAdmin. Clique em Ir.

A consulta bem-sucedida ou phpMyAdmin lhe dará uma ideia melhor do que está errado com a consulta.

Outra coisa que você pode tentar se estiver tendo problemas com sua consulta SQL é usar wpdb->insert(). Não há necessidade de prepare() porque é feito internamente com este método. Isso exigirá uma reorganização de como seus campos e dados são codificados para que sejam estruturados conforme necessário e descritos na página de documentos vinculada.

lançador de tópicos

(@mortenamdk)

1 ano, 3 meses atrás

Olá

Eu não vejo uma saída de eco, mas se eu pegar o controlador, posso vê-lo, 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 }

Eu posso ver o 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-20’19 -201 ‘, 1.8’-10-20’19 -201 , ”, 0)

Não há nada em um console

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *