2016-08-23 53 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

使用您的瀏覽器的開發者控制檯與網絡選項卡,並告訴我們你的電話響應是什麼。 –