如何发送AJAX请求并从函数获得响应?

时间:2016-06-01 作者:dave dave

我在插件中构建了一个函数。我想用jQuery ajax函数来调用它。

该函数定义如下:

add_action( \'wp_ajax_my_test_ajax\', \'my_test_ajax\' );
add_action( \'wp_ajax_nopriv_my_test_ajax\', \'my_test_ajax\' );

function  my_test_ajax() {    

    $resp = array(\'title\' => \'here is the title\', \'content\' => \' here is the content\') ;        
    wp_send_json($resp) ;

}
然后,我尝试从javascript调用函数:

var target = \'http://\'  +  window.location.hostname  + \'/wp-admin/admin-ajax.php\' ;
var data = {
    action: \' my_test_ajax\'
} ;
var req = jQuery.post( target , data,  function(resp) { 
    console.log(resp.responseText);
}) ;    
}
该站点通过管理ajax进行响应。php。响应带有“200 OK”标题。响应的正文为“0”。

codex告诉我,如果帖子正文中的“action”的值与连接到wordpress ajax挂钩的函数的名称不匹配,那么我可以期望得到这种响应。但据我所知,我在那里很好。

我确信这个函数包含在我的插件文件中。

我还需要什么其他最基本的要素才能使这项工作正常进行?

(此时我不想担心nonces或本地化js。我只想在进一步构建之前从函数获得响应)

2 个回复
SO网友:Ismail

$.ajax 非常简单,您可以在data: {action:\'my_test_ajax\'} 行,请尝试以下操作:

var target = \'http://\'  +  window.location.hostname  + \'/wp-admin/admin-ajax.php\';
$.ajax({
    url: ajax,
    data: {action:\'my_test_ajax\'},
    type: \'post\',
    success: function(data){
        console.log(data, data.title, data.content)
    }
});
确保target 精确指向admin-ajax.php 或设置一个全局变量(或使用本地化脚本)以添加一个存储路径的变量admin-ajax.php 这是admin_url(\'admin-ajax.php\') 以防混淆。

$.ajax 默认情况下解析JSON数据,如果使用其他方法返回原样响应(字符串),则只需使用JSON.parse(response) 方法JSON这是因为您使用wp_send_json($resp) 它在端点中返回JSON对象响应。

以下是向请求中添加更多数据的示例:

使用append 方法或将其保持简短,如下所示data: {action:\'my_test_ajax\', name: \'dave\', network: \'wpse\'}my_test_ajax 函数可以通过以下方式获取这些数据$_REQUEST[tag] e、 g级$_REQUEST[\'name\']

$.get ( $_GET ) method:

这个更简单,需要的代码更少:

$.get( target = \'/wp-admin/admin-ajax.php?action=my_test_ajax\', function( data ) {
    console.log( data )
});
记住使用$_REQUEST 因为它合并了所有$_GET, $_POST$_COOKIE 数据集。当然,除非你确定你使用的方法。

希望这有帮助。

SO网友:T.Todua

1) 代码中有一个额外的空格,这就是它不起作用的原因:

action: \' my_test_ajax\'
         ^
2)此外,您必须包括check_admin_referrer() !!!!!!!!!

function  my_test_ajax() {  
   check_admin_referrer();
    .........
    .........
}

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i