2015-04-29 90 views
1

我的AJAX調用返回0.
這裏是jQuery。Wordpress AJAX調用一直返回0

$.ajax({ 
      type: "POST", 
      url: ajaxurl, 
      data: { 
       action:"add_social_share_entry", 
       referral_code: "<?php echo Contest_Domination::get_referral_code("",""); ?>" 
      }, 
      success: function(data){ 
       alert(data); 
      }, error: function(error){ 
       alert(error); 
      } 
     }); 

和PHP。

function add_social_share_entry(){ 
    $referral_code = $_REQUEST["referral_code"]; 
    if (class_exists('Contest_Domination')) { 
     if (!empty($referral_code)) { 
      $referral_submission = Contest_Domination::get_submission_by_referral_code($referral_code); 
      if($referral_submission!==false){ 
       $referral_id = $referral_submission->submission_ID; 
       Contest_Domination::add_entries($referral_id, 1); 
       echo "Successfully added entry"; 
      } 
     }else{ 
      echo "Referral code not received"; 
     }       
    }else{ 
     echo "Class does not exist"; 
    } 
    die(); 
} 
add_action('wp_ajax_add_social_share_entry', 'add_social_share_entry'); 
add_action('wp_ajax_nopriv_add_social_share_entry', 'add_social_share_entry'); 

這些都在同一頁(模板頁)上,響應爲0.讓我知道你是否需要額外的信息或請求標題。這讓我暈眩。謝謝!


編輯:我意識到我可能已經有點曖昧。 JS和PHP都在PHP模板文件中,所以PHP位運行良好。我會顯示我的標題,以免錯誤來自那裏。

行動:add_social_share_entry
referral_code:552ec562300af


SOLUTION
正如盧卡斯下面指出的那樣,我需要移動WP AJAX掛鉤到我functions.php文件在我的主題,因爲它不在我的插件中工作。

回答

0

這裏的問題是,你是在錯誤的道路用php混合的javascript,第一:

referral_code: "<?php echo Contest_Domination::get_referral_code("",""); ?>" 

這不會有任何效果,除非你通過PHP,我想你不渲染你的JavaScript文件。

有了這個在手,你可以告訴您的代碼結尾:

die(); 

您要發送什麼回你的jQuery成功/ errro回調。

我建議你檢查一下你是如何得到推薦代碼的,一旦你有了它並將它發送到你的PHP,使用一些帶有狀態代碼和響應文本的標題,這樣你就可以告訴你的jQuery ajax何時應該調用錯誤以及何時應該調用成功。

編輯

嘗試刪除從功能die();,是殺害腳本執行,並可能是導致問題的原因。

+0

請看看我更新的帖子。你會看到這個問題不是PHP。它發送得很好,並從/wp-admin/admin-ajax.php獲得200 OK響應,所以我認爲它必須是關於模板文件無法訪問爲WP添加動作的問題,或者是模板文件和admin-ajax.php文件位於wp-admin文件夾中。 – Vap0r

1

你能嘗試移動你的PHP部分

function add_social_share_entry() { 
..... 
} 
add_action('wp_ajax_add_social_share_entry', 'add_social_share_entry'); 
add_action('wp_ajax_nopriv_add_social_share_entry', 'add_social_share_entry'); 

到你的WordPress的functions.php主題文件?我猜WordPress如果你把它們放在模板中,它不會註冊這個鉤子。

+0

就是這樣。工作了第二個我把它移到'功能。php' – Vap0r

+0

或者只是將文件包含到functions.php中,它也可以工作 –