Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript wordpress中的Ajax调用不';不要转到admin-ajax.php_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript wordpress中的Ajax调用不';不要转到admin-ajax.php

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,

我试图在wordpress管理子菜单中使用ajax调用函数。这是我的密码

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语句中吗?