Javascript wordpress中的Ajax调用不';不要转到admin-ajax.php
我试图在wordpress管理子菜单中使用ajax调用函数。这是我的密码Javascript wordpress中的Ajax调用不';不要转到admin-ajax.php,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我试图在wordpress管理子菜单中使用ajax调用函数。这是我的密码 jQuery('#deleteProj').submit(ajaxSubmit); function ajaxSubmit(){ var tobeDeleted = jQuery(this).serialize(); alert(tobeDeleted); jQuery.ajax({ type:"POST", url: ajaxurl, data: tobeDeleted,
jQuery('#deleteProj').submit(ajaxSubmit);
function ajaxSubmit(){
var tobeDeleted = jQuery(this).serialize();
alert(tobeDeleted);
jQuery.ajax({
type:"POST",
url: ajaxurl,
data: tobeDeleted,
success:function(){ alert(tobeDeleted);},
error:function(errorThrown){alert(errorThrown);}
});
return false;
}
但是,代码会打开一个查询admin.php文件的新页面,如下所示:
wp/wp-admin/admin.php?q=id&action=deleteproj
我真的不明白为什么会发生这种事。我正在从插件的管理菜单中调用该函数
更新
问题是我必须在插件的主文件上定义php函数。我还确保绝对定义admin-ajax.php的位置,这允许jQuery正确执行 您似乎正在重定向而不是单击,请尝试将您提交的事件更改为单击事件
jQuery('#deleteProj').find('[type="submit"]').click(function(e){
e.preventDefault();
var tobeDeleted = jQuery(this).serialize();
alert(tobeDeleted);
jQuery.ajax({
type:"POST",
url: ajaxurl,
data: tobeDeleted,
success:function(){ alert(tobeDeleted);},
error:function(errorThrown){alert(errorThrown);}
});
});
试试这个:
jQuery('#deleteProj').submit(function() {
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
var formData= jQuery(this).serialize();
jQuery.ajax({
url:ajaxurl,
action:'function_name',
data:formData,
type: "POST",
success: function(data) {
// return
}
});
return false;
});
jQuery('#deleteProj').submit(函数(){
var ajaxurl=“”;
var formData=jQuery(this).serialize();
jQuery.ajax({
url:ajaxurl,
操作:'function_name',
数据:formData,
类型:“POST”,
成功:功能(数据){
//返回
}
});
返回false;
});
注意:)如果您已经在php文件中编写了代码,那么Gulshan的回答是正确的,但是如果您已经在另一个.js文件中编写了此代码,则无法访问其中的ajax url。然后需要本地化脚本以添加ajax url 请遵循示例代码:
wp_enqueue_script( 'mainscript', get_template_directory_uri() . '/js/main.js', array(), 'v1', true );
wp_localize_script( 'mainscript', 'sitesettings', array('ajaxurl' => admin_url( 'admin-ajax.php' )));
对于这两个函数,您需要放置相同的句柄['mainscript'],现在您需要在main.js文件中编写以下代码:
jQuery('#deleteProj').submit(function() {
var ajaxurl = sitesettings.ajaxurl; // here you are accessing the admin-ajax.php
var formData= jQuery(this).serialize();
jQuery.ajax({
url:ajaxurl,
action:'function_name',
data:formData,
type: "POST",
success: function(data) {
// return
} });
return false;
});
希望这项工作对您有用看起来您正在重定向而不是AjaxingChange to onclick没有帮助,这可能是因为我试图在admin.php内部调用造成的吗?您确定页面上有js,包装在一个document ready语句中吗?