ajax - jQuery अजाक्स 404 त्रुटि लौट रहा है, लेकिन सही प्रतिक्रिया




wordpress (6)

मुझे भी यही समस्या थी।

जोड़।

परिवर्तन:

require_once('wp-blog-header.php');

सेवा मेरे:

require_once('conn.php');
require('wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();

यदि आप WP के बाहर एक पृष्ठ चाहते हैं तो यह HTTP शीर्षलेख त्रुटियों को भी ठीक करेगा।

मैं jQuery AJAX के माध्यम से एक PHP स्क्रिप्ट में कुछ डेटा पोस्ट कर रहा हूं, और सब ठीक से निष्पादित होता है, लेकिन यह 404 त्रुटि देता है। मेरे फायरबग कंसोल में PHP स्क्रिप्ट से प्रतिक्रिया सही है। मुझे समझ में नहीं आता कि स्क्रिप्ट कैसे प्रतिक्रिया दे सकती है, और यह अभी भी 404 त्रुटि फेंक रही है। JQuery "त्रुटि" कॉलबैक विधि ट्रिगर्स, और "सफलता" विधि नहीं है।

PHP स्क्रिप्ट द्वारा किए गए सभी बयान सही तरीके से काम करते हैं, क्योंकि मैं डेटाबेस को अपडेट किया जा सकता हूं, आदि।

मैं Dreamhost द्वारा होस्ट की गई वर्डप्रेस 3.x वेबसाइट पर jQuery 1.4.2 का उपयोग कर रहा हूं।

-----------और जानकारी-----------

ठीक है, मुझे पता चला है कि जब मैं अजाक्स स्क्रिप्ट में वर्डप्रेस की wp-blog-header.php फ़ाइल शामिल करता हूं, तो मुझे त्रुटि मिलती है। साथ ही, एक बार एक बार इन स्क्रिप्ट काम करते हैं, और मुझे 9 0% यकीन है कि उन्होंने WP 3.0 अपडेट के बाद काम करना बंद कर दिया है। मैं फायरबग से प्रतिक्रिया हेडर में पेस्ट करूंगा।

PHP से यह हेडर प्रतिक्रिया जिसमें wp-blog-header.php शामिल है और फ़ायरबग में 404 त्रुटि देता है ...

Date                Tue, 10 Aug 2010 01:44:44 GMT
Server            Apache
X-Powered-By        PHP/5.2.6
X-Pingback        http://www.learnwake.com/xmlrpc.php
Expires          Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control       no-cache, must-revalidate, max-age=0
Pragma            no-cache
Last-Modified       Tue, 10 Aug 2010 01:44:44 GMT
Vary                Accept-Encoding
Content-Encoding    gzip
Content-Length    36
Keep-Alive        timeout=2, max=98
Connection        Keep-Alive
Content-Type        text/html; charset=UTF-8

PHP से यह हेडर प्रतिक्रिया जिसमें wp-blog-header.php शामिल नहीं है और फायरबग में 200 ओके देता है ...

Date                Tue, 10 Aug 2010 01:44:58 GMT
Server            Apache
X-Powered-By        PHP/5.2.6
Vary                Accept-Encoding
Content-Encoding    gzip
Content-Length    36
Keep-Alive        timeout=2, max=100
Connection        Keep-Alive
Content-Type        text/html

मैंने एक बार वर्डप्रेस टेम्पलेट में एक ajax.php फ़ाइल जोड़ दी है, और यह समस्या थी।

मैंने इसे ajax.php के शीर्ष पर जोड़कर हल किया

header('Response: HTTP/1.1 200 OK');

एक हैक की तरह, लेकिन यह काम किया।


कुल मिलाकर वहां एक टन स्थान नहीं हैं जहां वर्डप्रेस 404 लौटाएगा। मैं उन स्थानों के लिए स्रोत पेड़ को पकड़ने और कुछ डीबग कोड रखने का सुझाव देता हूं कि यह क्यों हो रहा है।


किसी और ने इसे उत्तर के रूप में पोस्ट नहीं किया है, इसलिए यह ध्यान देने योग्य है। आपको wp-blog-header.php बजाय wp-load.php शामिल होना चाहिए।

यदि आप wp-blog-header.php खोलते हैं तो आप देखेंगे क्यों:

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    require_once( dirname(__FILE__) . '/wp-load.php' );

    wp();

    require_once( ABSPATH . WPINC . '/template-loader.php' );

}

यदि आप केवल AJAX ऑपरेशन के लिए template-loader.php कर रहे हैं, तो आपको template-loader.php को शामिल करने की आवश्यकता नहीं है। यह अनावश्यक ओवरहेड बनाएगा, और फिर निश्चित रूप से 404 त्रुटि प्रदान करेगा।

वर्डप्रेस के वर्तमान और भविष्य के संस्करणों के लिए यह 'वर्कअराउंड' आवश्यक है। मुझे लगता है कि पिछले 3.0 में कुछ भी शामिल है, जैसा कि बताया गया है wp-load.php शामिल होना चाहिए।


टिम के जवाब के आधार पर, मैंने अपनी प्लगइन में "wp" से "init" तक पकड़ा हुआ हुक बदल दिया और उसने मुझे 404 देना बंद कर दिया।


सर्वर साइड:

     doPost(HttpServletRequest request, HttpServletResponse response){ 
            try{ //logic
            }catch(ApplicationException exception){ 
               response.setStatus(400);
               response.getWriter().write(exception.getMessage());
               //just added semicolon to end of line

           }
 }

ग्राहक की ओर:

 jQuery.ajax({// just showing error property
           error: function(jqXHR,error, errorThrown) {  
               if(jqXHR.status&&jqXHR.status==400){
                    alert(jqXHR.responseText); 
               }else{
                   alert("Something went wrong");
               }
          }
    }); 

जेनेरिक अजाक्स त्रुटि हैंडलिंग

अगर मुझे सभी AJAX अनुरोधों के लिए कुछ सामान्य त्रुटि प्रबंधन करने की आवश्यकता है। मैं AJAXError हैंडलर सेट करूंगा और HTML सामग्री के शीर्ष पर त्रुटि कंटेनर नामक एक div पर त्रुटि प्रदर्शित करूंगा।

$("div#errorcontainer")
    .ajaxError(
        function(e, x, settings, exception) {
            var message;
            var statusErrorMap = {
                '400' : "Server understood the request, but request content was invalid.",
                '401' : "Unauthorized access.",
                '403' : "Forbidden resource can't be accessed.",
                '500' : "Internal server error.",
                '503' : "Service unavailable."
            };
            if (x.status) {
                message =statusErrorMap[x.status];
                                if(!message){
                                      message="Unknown Error \n.";
                                  }
            }else if(exception=='parsererror'){
                message="Error.\nParsing JSON Request failed.";
            }else if(exception=='timeout'){
                message="Request Time out.";
            }else if(exception=='abort'){
                message="Request was aborted by the server";
            }else {
                message="Unknown Error \n.";
            }
            $(this).css("display","inline");
            $(this).html(message);
                 });




jquery ajax wordpress