插件类文件:
function __construct()
{
add_shortcode('user_registration_form', array(
$this,
'shortcode'
));
}
public function hook()
{
add_action('wp_ajax_get_product_serial_callback', 'get_product_serial_callback');
add_action('wp_ajax_nopriv_get_product_serial_callback', 'get_product_serial_callback');
}
public function product_serial_ajax()
{ ?>
<script type="text/javascript">
jQuery(document).ready(function() {
alert('Hello World!');
jQuery.ajax({
type: 'GET',
url: "<?php echo admin_url('admin-ajax.php'); ?>",
//url: ajaxurl,
dataType : "JSON",
data : {action: "get_product_serial_callback"},
//cache: false,
success: function(data){
alert('Eureka')';
}
});
});
</script><?php
}
function csv_to_array($filename = '', $delimiter = ',')
{
//if(!file_exists($filename) || !is_readable($filename))
//return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1024, $delimiter)) !== FALSE) {
if (!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
function get_product_serial_callback()
{
$upload_dir = wp_upload_dir();
$csvFile = $upload_dir['baseurl'] . '/Eragon-Serial.csv';
$csv = $this->csv_to_array($csvFile); //read csv
foreach ($csv as $serialnum) {
$serial_num_array[] = $serialnum['product_serial'];
}
$json_array = json_encode($serial_num_array);
echo $json_array;
die();
}
function shortcode()
{
$this->product_serial_ajax(); //fetch product serial number
}
但是,如果未定义遇到ajaxurl
,我将其更改为ajaxurl
,其形式如下所示
http://example.com/wp-admin/admin-ajax.php?action=get_product_serial_callback
This也没有帮助。
如何调用get_product_serial_callback
函数以获取JSON
值并在function(data)
中设置这些值?
答案 0 :(得分:0)
检查此代码
在sepearate js中添加此load_product功能并加载它。
function load_product(){
jQuery.ajax({
type: "GET",
url: ajaxurl,
dataType : "JSON",
data : {action: "get_product_serial_callback"},
//cache: false,
success: function(data){
alert('Eureka');
}
});
}
已编辑的代码
function __construct()
{
add_shortcode('user_registration_form', array(
$this,
'shortcode'
));
$this->hook();
}
public function hook()
{
add_action('wp_ajax_get_product_serial', array( $this,'get_product_serial_callback'));
add_action('wp_ajax_nopriv_get_product_serial',array( $this,'get_product_serial_callback') );
add_action( 'init',array( $this, 'my_script_enqueuer') );
}
function my_script_enqueuer() {
wp_localize_script('more_script', 'myAjax', array('ajaxurl' => admin_url('admin-ajax.php')));
wp_register_script('more_script', plugins_url('bootstrap/js/product-serial.js', __FILE__),array('jquery'));
wp_enqueue_script('more_script');
}
public function product_serial_ajax()
{ ?>
<script type="text/javascript">
load_product();
</script><?php
}
function csv_to_array($filename = '', $delimiter = ',')
{
//if(!file_exists($filename) || !is_readable($filename))
//return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1024, $delimiter)) !== FALSE) {
if (!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
function get_product_serial_callback()
{
$upload_dir = wp_upload_dir();
$csvFile = $upload_dir['baseurl'] . '/Eragon-Serial.csv';
$csv = $this->csv_to_array($csvFile); //read csv
foreach ($csv as $serialnum) {
$serial_num_array[] = $serialnum['product_serial'];
}
$json_array = json_encode($serial_num_array);
echo $json_array;
die();
}
function shortcode()
{
$this->product_serial_ajax(); //fetch product serial number
}
答案 1 :(得分:0)
插件类文件:
function __construct()
{
add_shortcode('user_registration_form', array($this, 'shortcode'));
wp_register_script('product-serial', plugins_url('bootstrap/js/product-serial.js', __FILE__),array('jquery')); //custom jquery for product serial
wp_enqueue_script( 'product-serial' ); //custom jquery for product serial
$this->hook();
}
public function hook()
{
add_action('wp_ajax_get_product_serial', array( $this,'get_product_serial'));
add_action('wp_ajax_nopriv_get_product_serial',array( $this,'get_product_serial') );
}
public function product_serial_ajax(){ ?>
<script type="text/javascript">load_product();</script>
<?php
}
//convert csv data into array
function csv_to_array($filename='', $delimiter=',')
{
//if(!file_exists($filename) || !is_readable($filename))
//return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1024, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
//get product serial number
function get_product_serial(){
$upload_dir = wp_upload_dir();
$csvFile = $upload_dir['baseurl'].'/Eragon-Serial.csv';
$csv = $this->csv_to_array($csvFile); //read csv
foreach ($csv as $serialnum){
$serial_num_array[] = $serialnum['product_serial'];
}
$json_array = json_encode($serial_num_array);
echo $json_array;
die();
}
function shortcode()
{
$this->product_serial_ajax(); //fetch product serial number
}
单独的JS文件
function load_product(){
var result="";
jQuery.ajax({
type: "GET",
url: ajaxurl,
async: false,
dataType : "JSON",
contentType: 'application/json; charset=utf-8',
data : {action: "get_product_serial"},
//cache: false,
success: function(data){
result = data;
return result;
},
error: function() {
alert('Unexpected error occured. Please try again.');
}
});
}
P.S:将以下内容放在我主题的header.php中为我工作
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>