Ajax requests without JQuery

时间:2014-06-03 作者:Ben

我希望在不使用JQuery的情况下发出Ajax请求,并且不包括wp_load.php. 我想用香草XmlHttpRequest 我自己写的对象。

有任何链接、提示、以前做过的事情等吗?

2 个回复
最合适的回答,由SO网友:Ben 整理而成

在一个新的应用程序中回到这一点。我只是使用Angular解决了这个问题,类似的方法也可以用于vanilla JS。

首先,让Javascript访问admin-ajax.php URL,类似于:

echo "<script type=\'text/javascript\'>var ajaxurl = \'".admin_url(\'admin-ajax.php\')."\'</script>";
下一步,在functions.php, 注册希望Ajax执行的操作:

add_action("wp_ajax_infiniteScroll", "infiniteScroll");
add_action("wp_ajax_nopriv_infiniteScroll", "infiniteScroll");
。。。并添加与上述操作的第二个参数相对应的操作处理程序:

function infiniteScroll() { 
    // This is what\'s returned to the client.
    echo "foo"; 
    die(); 
}
现在,你所有的鸭子都排成一行了。呼叫ajaxurl 使用action 参数设置为您在上面所做的操作,并且所有操作都应正常工作(以下示例为角度):

$http({ url: ajaxurl + "?action=infiniteScroll" })
    .success(thenPopulate)
    .error(thenError);
大多数解决方案“需要”JQuery(不需要),并且wp_enqueue_scripts() 和其他一些“方便”功能(也不是必需的)。主要的事情是,让URL对JS可用,注册一个操作,然后在请求中发送该操作。

对于那些关注全球可见的ajaxurl, 我读到的关于使用的所有其他解决方案wp_localize_script() 这就是一个全局变量。使用上述方法,您至少可以对其范围有一点控制。

SO网友:akamaozu

如果您所需要做的只是获取关于一篇/多篇文章的数据,我将郑重建议您使用JSON API插件(http://wordpress.org/plugins/json-api/).

我使用它向wp url发出普通xmlhttp请求并返回json

结束