Archief - Data uit db halen met Ajax en dit weergeven in een form - Wordpress

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

godf@ther

Legacy Member
Ik heb de volgende bestanden in een plugin:

Main plugin file:

<?php

require( plugin_dir_path( __FILE__ ) . 'menu.php');
require_once( plugin_dir_path( __FILE__ ) . 'getuser.php');


add_action( 'wp_enqueue_scripts', 'ffd_load_scripts' );

function ffd_load_scripts()
{
wp_register_script('ffd_js_script', WP_PLUGIN_URL.'/FixFormData/js/ffd_js_script.js', array('jquery'));
wp_localize_script('ffd_js_script', 'myAjax', array(
'ajaxurl' => admin_url('admin-ajax.php')
)
);

wp_enqueue_script('jquery');
wp_enqueue_script('ffd_js_script', plugin_dir_url(__FILE__) . 'js/ffd_js_script.js');
}

getuser.php:

<?php
add_action('wp_ajax_nopriv_getuser', 'getuser');
add_action('wp_ajax_getuser', 'getuser');

function getuser($str)
{
global $wpdb;

/*if(!wp_verify_nonce($_REQUEST['_nonce'], 'ajax-nonce'))
{
die('Not authorised!');
}*/

$myoption = get_option( 'fixformdata_options' );
$myoptionValue = maybe_unserialize( $myoption );

$result2 = $wpdb->get_row
(
$wpdb->prepare
(
"SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %s", $str
)
);

if($result2)
{
echo json_encode( $result2 );
}
}

ffd_js_script.js:

<?php
add_action('wp_ajax_nopriv_getuser', 'getuser');
add_action('wp_ajax_getuser', 'getuser');

function getuser($str)
{
global $wpdb;

/*if(!wp_verify_nonce($_REQUEST['_nonce'], 'ajax-nonce'))
{
die('Not authorised!');
}*/

$myoption = get_option( 'fixformdata_options' );
$myoptionValue = maybe_unserialize( $myoption );

$result2 = $wpdb->get_row
(
$wpdb->prepare
(
"SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %s", $str
)
);

if($result2)
{
echo json_encode( $result2 );
}
}

De bedoeling is dat van het moment dat een value van een text-input veranderd, deze wordt doorgegeven met een ajax call naar de database en overeenkomstige data als response teruggeeft.
Zit hier al enkele dagen aan, mensen op stackoverflow spreken elkaar dikwijls tegen, of geven links die me dan weer op een volledig andere richting zetten (die niet juist is of die ik ook geprobeerd heb, zonder succes).

Er is iets mis met de ajax call in jQuery, wrs klopt value: this.value niet.
Ook als ik in het sql statement $sql vervang door vb. 1 dan werkt het wel (om vorig probleem met de ajax call even te omzeilen). Maar dan krijg ik mijn results tevoorschijn in de console in plaats dat ze worden weergegeven in de text inputs.

Hulp wordt serieus geapprecieerd!

Alvast bedankt.

EDIT oplossing:

main plugin file:

require( plugin_dir_path( __FILE__ ) . 'menu.php');
require_once( plugin_dir_path( __FILE__ ) . 'getuser.php');

add_action( 'wp_enqueue_scripts', 'ffd_load_scripts' );

function ffd_load_scripts()
{
$myoption = get_option( 'fixformdata_options' );
$myoptionValue = maybe_unserialize( $myoption );

$arguments = array();
for($i=1; $i<= $myoptionValue[fieldcount]; $i++)
{
$arguments['index'.$i] = $myoptionValue['id'.$i];
}

/*wp_register_script('ffd_js_script', WP_PLUGIN_URL.'/FixFormData/js/ffd_js_script.js', array('jquery'));
wp_localize_script('ffd_js_script', 'myAjax', array_merge(array(
'ajaxurl' => admin_url('admin-ajax.php'),
'fieldcount' => $myoptionValue['fieldcount'],
'idinfo' => $myoptionValue['idinfo']),$arguments)
);*/

wp_register_script('ffd_js_script', WP_PLUGIN_URL.'/FixFormData/js/ffd_js_script.js', array('jquery'));
wp_localize_script('ffd_js_script', 'myAjax', array(
'ajaxurl' => admin_url('admin-ajax.php'),
//'nonce' => wp_create_nonce( 'ajax-nonce' ),
'fieldcount' => $myoptionValue['fieldcount'],
'idinfo' => $myoptionValue['idinfo'])
);
wp_localize_script('ffd_js_script', 'myIndexArray', $arguments);

wp_enqueue_script('jquery');
wp_enqueue_script('ffd_js_script', plugin_dir_url(__FILE__) . 'js/ffd_js_script.js');
}

getuser.php:

<?php header('content-type: application/json');
add_action('wp_ajax_nopriv_getuser', 'getuser');
add_action('wp_ajax_getuser', 'getuser');

function getuser()
{
global $wpdb;

/*if(!wp_verify_nonce($_REQUEST['_nonce'], 'ajax-nonce'))
{
die('Not authorised!');
}*/

$myoption = get_option( 'fixformdata_options' );
$myoptionValue = maybe_unserialize( $myoption );

$result2 = $wpdb->get_row
(
$wpdb->prepare
(
"SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %s", $_POST['value']
)//personeelsNummer nog veranderen in een variable option
);

if($result2)
{
echo json_encode( $result2 );
}

die();
}

ffd_js_script:
jQuery(document).ready(function($){
jQuery(myAjax.idinfo).change(function()
{
$value = $(this).val();
jQuery.ajax({
type : 'post',
dataType : 'json',
url : myAjax.ajaxurl,
data : {
action: 'getuser',
value: $value/*,
nonce: myAjax.nonce*/
},

complete: function(response){
var parsed = JSON.parse(response.responseText)
var arr = [];
for(var x in parsed){ arr.push(parsed[x]);}
var indexArray = [];
for(var y in myIndexArray){ indexArray.push(myIndexArray[y]);}
for(var i = 0; i<= myAjax.fieldcount-1; i++)
{
jQuery(indexArray).val(arr[i+1]);
}
}
});

});
});
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan