大家好我想在我的插件中调用ajax函数,为此我看到了这个 tutorial但在我的情况下,永远不要执行de ajax call。
首先在构造函数中我有这个:
function __construct(){
add_action('init', array( $this, 'register_script'));
....
add_action('wp_ajax_aad_get_results', array($this, 'aad_process_ajax'));
}
function register_script(){
wp_register_script('myplugin', plugins_url('/includes/myplugin.js', __FILE__), array('jquery'));
wp_enqueue_script('myplugin');
wp_enqueue_script('add-ajax', plugin_dir_url(__FILE__).'includes/js/add-ajax.js', array('jquery'));
}
当我点击此表格的按钮时,必须执行此功能
public function rbk_show_box( $post ) {
// get post meta values
$values = get_post_custom( $post->ID );
// echo '<input type="hidden" name="',$post->post_title.'_add_box_nonce" value="',wp_create_nonce(basename(__FILE__)),'" />';
echo '<form id="camposMeta" name="este" method="POST">';
echo'</form>';
echo '<form id="camposMeta" name="este" method="POST" >';
echo '<input type="hidden" name="',$post->post_title,'">';
echo '<fieldset id="campos1" class="clonedInput">';
echo '<label>Name</label>';
echo '<input type="text" name="name1" id="name1" />';
echo '<select name="select1" id="select1">';
echo '<option >Selecciona el tipo</option>';
echo '<option>Text</option>';
echo '<option>TextArea</option>';
echo '<option>File</option>';
echo '</select>';
echo'</fieldset>';
echo '<input type="button" id="btnAdd" value="+" />';
echo'<input type= "submit" id="btn_submit" value="Crear Meta Box">';
echo'</form>';
}
我在表单中创建动态字段,所以现在我需要使用所有这些字段来创建元数据。
我知道我的字段是这样的:$('#camposMeta').serialize()
但是当我调用文件createMetaBox.php
来传递这个参数时程序不起作用!!
$('#btn_submit').click(function(){
alert('ready')
$.ajax({
// url: createMetaBox.php
data: {
action: 'aad_get_results',
//valores:$('#camposMeta').serialize()
},
success:function(){
}
});
});
任何想法!!!
答案 0 :(得分:1)
如果您正在使用OO技术,我怀疑您的ajax挂钩应该是:
add_action('wp_ajax_aad_get_results', array( $this, 'aad_process_ajax' ) );
如果您希望Ajax为未登录的用户(例如前端)执行,您还应该添加:
add_action('wp_ajax_nopriv_aad_get_results', array( $this, 'aad_process_ajax' ) );
答案 1 :(得分:1)
您必须发布到ajax网址。
首先将您的javascript置于其后进行本地化,并将ajaxurl作为变量提供
wp_localize_script( 'quote_script', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
然后使用ajax url变量
调用你的ajax$('#btn_submit').click(function(){
$.ajax({
url: MyAjax.ajaxurl;
data: {
action: 'aad_get_results',
},
另外,如果你从你的php函数回复,你需要在ajax回调中做一些事情,例如
success: function(response) {
alert(response);
};