2017-07-03 49 views
0

我使用管理員阿賈克斯,但它不工作。請幫助我找出問題所在。這裏是jQuery代碼在WordPress的管理員阿賈克斯不起作用

jQuery(document).ready(function($) { 

    jQuery('#newPostsForm').submit(ajaxSubmit); 

    function ajaxSubmit(){ 

    var newPostsForm = jQuery(this).serialize(); 

    jQuery.ajax({ 
    type:"POST", 
    url: "<?php echo admin_url('admin-ajax.php'); ?>", 
    data: newPostsForm, 
    success:function(data){ 
    jQuery("#feedback").html(data); 
    } 
    }); 

    return false; 
    } 
}): 

如果我提醒VAR「newPostsForm」,它顯示的發佈values.but它目前正在着手阿賈克斯。這裏是我使用的從

<form type="post" action="" id="newPostsForm">  
    <input type="hidden" name="action" value="addPosts"/> 
<!-- input fields --> 
</form> 

這裏是我使用的WordPress功能。這個函數是另一個文件。 HTML和javascript在同一個文件中

function addPosts(){ 

echo "<pre>"; 
print_r($_POST); 


die(); 
} 



add_action('wp_ajax_addPosts', 'addPosts'); 
add_action('wp_ajax_nopriv_addPosts', 'addPosts'); // not really needed 
+0

您的腳本是否正在運行PHP過程?嘗試將'echo'調用放入一個變量中,然後提醒您驗證URL是否正確+將變量傳遞給jQuery ajax url選項。 – wmorrell

+0

你能給我一分鐘,並告訴我如何按照你的指令進行的代碼? –

回答

0

檢查腳本是否在PHP發送到客戶端之前被處理。代碼更改爲類似於這樣:

jQuery(document).ready(function($) { 

    jQuery('#newPostsForm').submit(ajaxSubmit); 

    function ajaxSubmit() { 
     var newPostsForm = jQuery(this).serialize(); 
     var url = "<?php echo admin_url('admin-ajax.php'); ?>"; 
     alert("Submitting to URL: " + url); 
     jQuery.ajax({ 
      type:"POST", 
      url: url, 
      data: newPostsForm, 
      success:function(data){ 
       jQuery("#feedback").html(data); 
      }, 
      error: function (xhr, status, err) { 
       alert("Got status " + status + " and error: " + err); 
      } 
     }); 
     return false; 
    } 
}); 

如果你喜歡https://mysite.example.org一個實際的URL,然後檢查URL轉到一個有效的位置。如果你得到<?php echo admin_url('admin-ajax.php'); ?>,那麼你的代碼沒有被PHP處理,並且AJAX調用將失敗,因爲你沒有使用有效的URL。

+0

我越來越像 提交到URL:http://localhost/example/wp-admin/admin-ajax.php。我thnk的網址是有效的。 –

+0

好的,嘗試添加錯誤處理函數,以查看處理表單是否存在錯誤。如果「admin-ajax.php」產生錯誤,您將收到錯誤提示。否則,我不確定問題是什麼,需要更多信息。 – wmorrell

0

問題似乎是JS代碼中無法訪問AJAX URL。如果將JS代碼寫入PHP頁面,那麼只有代碼可以工作。因爲PHP代碼不能被執行到JS文件中。

現在解決方案是本地化JS文件。請按照代碼。

wp_localize_script('handle', 'settings', array('ajaxurl' => admin_url('admin-ajax.php'))); 

寫不到,你必須排隊的js文件上面的代碼。 現在JS文件:

jQuery.ajax({ 
     type:"POST", 
     **url: settings.ajaxurl,** 
     data: newPostsForm, 
     success:function(data){ 
      jQuery("#feedback").html(data); 
     } 
    }); 

希望它會在你的選擇工作。