2013-03-29 6 views
5

AJAX और वर्डप्रेस का उपयोग कर (इसे ठीक से करने की कोशिश कर रहा है)। यह मेरे लिए नया है लेकिन मैंने इसे और अधिक फ्लेयर से पहले काम किया था। यादृच्छिक रूप से यादृच्छिक रूप से समस्याएं शुरू हुईं इसलिए मैंने अपना कोड सबसे बुनियादी स्तर पर तोड़ दिया, और मैं इसे काम करने के लिए भी नहीं प्राप्त कर सकता !!! मुझे लगता है कि मैं बस निराश हो रहा हूं और यह मुझे एक साधारण गलती याद करने के लिए मजबूर कर रहा है। क्या इसमें कुछ गड़बड़ है?अजाक्स सफलता संदेश मेरे होमपेज के एचटीएमएल

मेरे jQuery:

$.post(
    ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php 
    {action: "post-save"}, 
    function(response){ 
     alert(response); 
    } 
); 

मेरे PHP:

function update_post(){ 
    echo json_encode(array("success" => "all systems go"), JSON_FORCE_OBJECT); 
    exit; 
} 
add_action('wp_ajax_post-save', 'update_post'); 

अंतिम परिणाम चेतावनी काम करता है जिसका अर्थ है $ .post सफल (? दाएं) है, लेकिन चर लौटे response है मेरे होमपेज का एचटीएमएल स्रोत ...

उत्तर

3

मैंने इसे समझ लिया ...

यह मेरी तरह कुछ नौसिखिया की मदद कर सकता है जो एक ही गलती करता है, इसलिए मैं अपने स्वयं के प्रश्न का उत्तर दूंगा :)

बाहर निकलता है मैं लॉग इन नहीं हुआ था, आंकड़े पर जाएं। प्रतिक्रिया हालांकि अजीब थी और पूरे होमपेज को वापस करने, मुझे फेंकने में मदद की। इस का कारण मैं अपने कार्यों फ़ाइलें जो इतनी तरह अजाक्स प्रत्युत्तर शामिल अवरुद्ध है था:

function block_users() 
{ 
    if(!current_user_can('delete_pages')) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 

मैं में लॉग इन करने पता होना चाहिए (सोचा था कि मैं था), लेकिन, इस तरह के अप्रत्याशित परिणाम और आज शुक्रवार की थी :)

किसी भी व्यक्ति को यह भी ध्यान दें कि इस पर ठोकरें: यदि आप चाहते हैं कि किसी को लॉग इन किए बिना AJAX करने के लिए wp_ajax, wp_ajax_nopriv का कोई निजीकरण संस्करण उपयोग न करें।

add_action('wp_ajax_nopriv_action', 'function'); 

add_action('wp_ajax_action', 'function'); 

पूर्व के एवज में ajax अनुरोध करने की अनुमति, यानी में लॉग इन किया जा रहा है की आवश्यकता नहीं है,।

+0

हाँ मैं एक ही मुद्दा है में DOING_AJAX जोड़ने के लिए किया गया था, मैं इन पंक्तियों टिप्पणी की है। तो यह अभी ठीक है, लेकिन मैं उपयोगकर्ताओं को होम पेज पर कैसे रीडायरेक्ट कर सकता हूं? मेरा फ़ंक्शन फ़ंक्शन themeblvd_redirect_admin() { है (! current_user_can ('edit_posts')) { wp_redirect (site_url()); बाहर निकलें; } } add_action ('admin_init', 'themeblvd_redirect_admin'); – Naveenbos

2

मैं एक ही समस्या थी, और समाधान समारोह

function block_users() 
{ 
    if(!current_user_can('delete_pages') && (! defined('DOING_AJAX') || ! DOING_AJAX)) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 
संबंधित मुद्दे