यह पता चला है कि मैं एक वर्डप्रेस प्लगइन बना रहा हूं जिसमें मुझे वर्डप्रेस की "admin_ajax.php" फ़ाइल में AJAX बनाने की आवश्यकता है, लेकिन अनुरोध भेजते समय, क्लाइंट मुझे त्रुटि 400 (खराब अनुरोध) देता है और मैं नहीं करता किस कारण से समझें।

कैप्चर

https://i.stack.imgur.com/5SiDd.png

https://i.stack.imgur.com/tPD6o.png

जावास्क्रिप्ट:

$.post(window.dibibot.ajax_uri, {
    action: "dibibot_check_message_read",
    to: (window.dibibot.USER_KEYS.split(":")[1]).toString(),
    message_id: JSON.stringify(data.message)
}, function(response) {
    console.log(response);
});

अजाक्स php फ़ंक्शन:

<?php
    function dibibot_check_message_read() {
        global $wpdb;
        $conversation_guid = $_POST['to'];
        $message_id = json_decode($_POST['message_id'], true);

        $conversation = $wpdb->get_var("SELECT metadata FROM " . $wpdb->prefix . "dibibot_conversations WHERE guid = '".$conversation_guid."'");
        $conversation = maybe_unserialize($conversation);
        for ($j=0; $j < count($message_id) ; $j++) { 
            for ($i=0; $i < count($conversation); $i++) {
                if($conversation[$i]['id'] == $message_id[$j]) {
                    $conversation[$i]['status'] = 2;
                    break;
                }
            }
        }
        $result = $wpdb->update($wpdb->prefix . 'dibibot_conversations', [ "metadata" => maybe_serialize($conversation) ], [ "guid" => $conversation_guid]);
        echo $result ? 1 : 0;
        wp_die(); 
    }
?>
2
Anthony Medina 29 अगस्त 2018, 19:35

2 जवाब

यदि आप 400 त्रुटि (खराब अनुरोध) प्राप्त करने के कारण यहां समाप्त होते हैं, तो इसका कारण AJAX अनुरोध करना हो सकता है, जब उपयोगकर्ता लॉग इन नहीं होता है।

आपको अपना कोड से बदलना होगा

wp_ajax_my_action', 'my_action' ); 

प्रति

wp_ajax_nopriv_my_action', 'my_action' ); 

शायद यह किसी और की मदद करता है।

4
RWC 19 फरवरी 2019, 20:14

कोड आपके अजाक्स हैंडलर को पंजीकृत करता है, लेकिन जब आप इसे केवल wp_enqueue_scripts पर चलाते हैं, तो पहले ही बहुत देर हो चुकी होती है और wp_ajax_nopriv_ हुक पहले से ही चल रहे होते हैं।

वर्डप्रेस अजाक्स के बारे में अधिक जानें:

https://codex.wordpress.org/AJAX_in_Plugins https://developer.wordpress.org/plugins/javascript/ajax/

3
RSPR 4 सितंबर 2018, 17:14
एक और मामला - अजाक्स एक्शन हुक को लिखना है जहां व्यवस्थापक कोड चलता है। अगर हुक जोड़ा जाता है जहां is_admin झूठा है तो यह काम नहीं करेगा
 – 
bhv
21 अगस्त 2021, 08:47