希望有一个简单的方法来做到这一点/我做错了一件可怕的事:我试图简单地显示一个帖子标题列表。当用户单击标题时,它将使用ajax将该标题的内容显示在同一页面上以前为空的div中。
然而,如果我切换永久链接等,或者有一篇文章的url只有几个目录深度(即:site.com/dir1/dir2/dir3/page或site.com/dir1/page),它将无法正常工作。它将只工作,如果我有网站。com?p=23
由于我的ajax请求中存在此相对url:
jQuery(document).ready(function($){
//whenever a title is clicked on: run this request
$(\'.get_post\').click(function(e){
e.preventDefault();
$portfolioPostId = $(this).data(\'postid\');
$.ajax({
type: \'GET\',
url: \'../wp-admin/admin-ajax.php\', //WON\'T LOAD on any url that ISN\'T like this format: site.com/?p=123
data: {
action: \'my_post\',
postid: $portfolioPostId
},
success: function(data){
$(\'#well\').html(\' \');
$(\'#well\').html(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log(errorThrown) + \'\\n\';
}
});
});
});
因此
url: \'/wp-admin/admin-ajax.php\'
, 如何使用绝对URL?还是有更好的办法?
EDIT: SOLUTION TO MY ISSUE:
多亏了Rarst的回答,我才找到了传递绝对URL的方法。
在将脚本排队的php文件中,我还通过一个名为psAjax_object
包含的绝对URLadmin-ajax.php
function frontend_js(){
wp_enqueue_script(\'shuffle_ajax\', plugins_url( NAME . \'/public/js/portfolio_grid_ajax.js\'), array(\'jquery\'), \'\', true );
//creates the property for the \'psAjax_object\'
$localizedArray = array(\'ajax_url\' => admin_url(\'admin-ajax.php\'));
//allows my portfolio_grid_ajax.js file to access \'psAjax_object\'
wp_localize_script(\'shuffle_ajax\', \'psAjax_object\', $localizedArray);
}
add_action(\'wp_enqueue_scripts\', \'frontend_js\');
然后在我的js文件中,我可以通过键入
psAjax_object.ajax_url