2016-08-23 51 views
0

嗨那里我想使用一些WordPress的AJAX我的第一个AJAX请求工作正常,但第二个没有。有人能告诉我为什么发生这种情况第二个WordPress的Ajax没有发射

正常工作:

PHP

//Add Students Details to DB 
 
add_action('wp_ajax_my_action', 'my_action_callback'); 
 
function my_action_callback() { 
 

 
\t $fName = $_POST['fName']; 
 
\t $lName = $_POST['lName']; 
 
\t $dob = $_POST['dob']; 
 
\t $gender = $_POST['gender']; 
 
\t $diet = $_POST['diet']; 
 

 
\t $current_id = get_current_user_id(); 
 

 

 
\t global $wpdb; 
 

 
\t $result = $wpdb->insert( 
 
\t \t 'wp_students', 
 
\t \t array( 
 
\t \t \t 'ID' => NULL, 
 
\t \t \t 'first_name' => $fName, 
 
\t \t \t 'last_name' => $lName, 
 
\t \t \t 'birthdate' => $dob, 
 
\t \t \t 'gender' => $gender, 
 
\t \t \t 'dietary_requirements' => $diet, 
 
\t \t \t 'user_id' => $current_id 
 
\t \t) 
 
\t); 
 

 
\t echo json_encode($result); 
 
\t wp_die(); 
 
}

JS

var data_value = { 
 
        action: 'my_action', 
 
        fName: $(acc[i]).find('input.fName').val(), 
 
        lName: $(acc[i]).find('input.lName').val(), 
 
        dob: $(acc[i]).find('input.dob').val(), 
 
        gender: $(acc[i]).find('select.gender').val(), 
 
        diet: $(acc[i]).find('textarea.diet_req').val() 
 
       }; 
 

 
       $.ajax({ 
 
        type: "post", 
 
        dataType: "json", 
 
        url: my_ajax_object.ajax_url, 
 
        data: data_value, 
 
        success: function(msg) { 
 
         if (msg == false) { 
 
          $('#insert_status').html('<strong><span style="color: red;">Error: </span></strong>Details Have Not Been Updated'); 
 
          return false; 
 
         } 
 
        }, 
 
        error: function(xhr, status, error) { 
 
         var i = JSON.parse(xhr.responseText) 
 
         alert(i.Message); 
 
        } 
 
       });

不起作用:

PHP

//Delete Students Details 
 
add_action('wp_ajax_my_delete', 'my_action_callback_delete'); 
 
function my_action_callback_delete() { 
 
\t echo 'here'; 
 
\t global $wpdb; 
 

 
\t $result = $wpdb->delete('wp_students', array('usesr_id' => get_current_user_id())); 
 
\t echo json_encode($result); 
 
\t wp_die(); 
 
}

JS

var value = { 
 
        action: 'my_delete' 
 
       }; 
 
       $.ajax({ 
 
        type: "post", 
 
        dataType: "json", 
 
        url: my_ajax_object.ajax_url, 
 
        data: value, 
 
        success: function(msg) { 
 
         if (msg == false) { 
 
          $('#insert_status').html('<strong><span style="color: red;">Error: </span></strong>Details Have Not Been Updated'); 
 
          return false; 
 
         } 
 
        }, 
 
        error: function(xhr, status, error) { 
 
         var i = JSON.parse(xhr.responseText) 
 
         alert(i.Message); 
 
        } 
 
       });

如果你能帮助我将是巨大的。 WordPress的Ajax不像一般的Ajax那样简单。

+0

你得到任何respons?像0或-1?你是否只为登录用户发起请求?尝试检查https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action),看看你是否正确的做法 – silver

+0

嘿@silver我跟着wordpress codex。我根本没有收到任何回应,这很奇怪。 –

+0

您是否正在运行未登录用户的代码?你尝试添加ajax钩子为未登录的请求'''add_action('wp_ajax_nopriv_my_delete','my_action_callback_delete');''' 如果仍然无效,那么问题是在你的js代码。 – silver

回答

1

难道你只是在你的删除函数中有一个错字?

'usesr_id' => get_current_user_id()

大概应该是

'user_id' => get_current_user_id()

//Delete Students Details 
 
add_action('wp_ajax_my_delete', 'my_action_callback_delete'); 
 
function my_action_callback_delete() { 
 
\t echo 'here'; 
 
\t global $wpdb; 
 

 
\t $result = $wpdb->delete('wp_students', array('usesr_id' => get_current_user_id())); 
 
\t echo json_encode($result); 
 
\t wp_die(); 
 
}

+0

嘿感谢您发现我修复它的错字!但它仍然不起作用。我根本没有进入php的功能 –

+1

你怎么知道的?你用什么方法来确定没有响应? –

+0

使用您的浏览器的开发者控制台与网络选项卡,并告诉我们你的电话响应是什么。 –