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

