2014-08-28 60 views
0

我的工作,通過在WordPress的法典阿賈克斯參考,並適應他們的榜樣爲管理端插件獲取WordPress管理選擇價值與Ajax

我的插件代碼創建一個Woocommerce產品索引頁新的下拉列表如下:

$dmo_select = '<select onchange="dmo_service_update()">'; 
foreach ($dmo_service_enhancements as $enhancement) { 
    $dmo_select .= '<option value="'.$enhancement.'">'.$enhancement.'</option>'; 
}  
$dmo_select .= '</select>'; 

使用WordPress的法典例如,當我選擇改變可以啓動警報對話:

PHP:

add_action('admin_enqueue_scripts', 'my_enqueue'); 
function my_enqueue($hook) { 
    wp_enqueue_script('wtd-dmo-update', plugins_url('ajax-js.js', __FILE__),  array('jquery'));  
    wp_localize_script (  
      'wtd-dmo-update',  
      'ajax_object',  
      array('ajax_url' => admin_url('admin-ajax.php'), 'we_value_3' => 1234)  
    );  
}  

add_action('wp_ajax_dmo_service_update_php_2', 'dmo_service_update_php_1'); 
function dmo_service_update_php_1() { 
    global $wpdb; 
    $whatever = intval($_POST['whatever_4']); 
    $whatever += 10; 
     echo $whatever; 
    die(); 
} 

使用Javascript:

function dmo_service_update(){ 
    var data = { 
     'action': 'dmo_service_update_php_2',  
     'whatever_4': ajax_object.we_value_3,  
    }; 

    jQuery.post(ajax_object.ajax_url, data, function(response) { 
     alert('Got this from the server: ' + response); 
    }); 
} 

的問題是,由AJAX處理的值(「1234」)時在wp_localize_script()函數調用這似乎設置一切提供的示例中硬編碼。

我需要的是所選擇的選擇框的值。我如何將它傳遞給Ajax,而不是硬編碼的值?

最終,我打算使用dmo_service_update_php_1 php函數將選擇值寫入數據庫。任何指針將非常感激地收到。

回答

0

更改select標籤onchange()觸發包括this.value

<select onchange="dmo_service_update(this.value)"> 

接受值到JavaScript函數

function dmo_service_update(dmo_selected){ 
    var data = { 
    'action': 'dmo_service_update_php_2', 
    'dmo_selected' : dmo_selected 
}; 

的PHP現在可以讀取值作爲$ _ POST參數:

function dmo_service_update_php_1() { 
    $selected = $_POST['dmo_selected']; 
    die(); 
}