AJAX

2012-07-31 10 views
9

का जवाब देने के लिए सरल HTTPRequestHandler प्राप्त करने में समस्या होने के कारण मैंने हाल ही में this के अनुसार AJAX अनुरोधों को स्वीकार करने के लिए SimpleHTTPRequestHandler को कार्यान्वित करने का प्रयास किया।AJAX

हालांकि क्लाइंट से अनुरोध प्राप्त करने तक सब कुछ काम करने लगता है, मैं स्वयं को कुछ भी वापस नहीं भेज सकता, जब मैं self.wfile.write ("foo") करने का प्रयास करता हूं, तो मुझे प्रतिक्रिया मिलती है ग्राहक; हालांकि, XmlObject से प्रतिक्रिया पाठ पूरी तरह से खाली है!?

यदि कोई इस पर कोई प्रकाश डाल सकता है, तो यह बहुत अच्छा होगा!

संपादित करें: मुझे लगता है कि मेरा AJAX कॉल सही ढंग से संरचित है क्योंकि मुझे पायथन से प्रतिक्रिया मिल रही है (मैंने डीबग मोड में चेक किया है); हालांकि, मुझे कोई संदेश वापस प्रतिक्रिया नहीं मिल रही है जब मैं ऑब्जेक्ट वापस प्राप्त करता हूं।

उत्तर

9

सुनिश्चित करें कि आपकी प्रतिक्रिया में send_header() सामग्री प्रकार के साथ है। मैंने देखा है कि AJAX अनुरोध इसके बिना भ्रमित हो जाते हैं। आप डिबगिंग के लिए अपने POST को GET पर स्विच करने का प्रयास कर सकते हैं और यह सुनिश्चित कर सकते हैं कि ब्राउज़र सामग्री देख सके।

import SimpleHTTPServer, SocketServer 
import urlparse 

PORT = 80 

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_GET(self): 

     # Parse query data & params to find out what was passed 
     parsedParams = urlparse.urlparse(self.path) 
     queryParsed = urlparse.parse_qs(parsedParams.query) 

     # request is either for a file to be served up or our test 
     if parsedParams.path == "/test": 
      self.processMyRequest(queryParsed) 
     else: 
      # Default to serve up a local file 
      SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self); 

    def processMyRequest(self, query): 

     self.send_response(200) 
     self.send_header('Content-Type', 'application/xml') 
     self.end_headers() 

     self.wfile.write("<?xml version='1.0'?>"); 
     self.wfile.write("<sample>Some XML</sample>"); 
     self.wfile.close(); 

Handler = MyHandler 

httpd = SocketServer.TCPServer(("", PORT), Handler) 

print "serving at port", PORT 
httpd.serve_forever() 
:

यहाँ एक्सएमएल लौटने अगर आप अपने प्रश्न या 127.0.0.1/test को ब्राउज़र को के लिए एक सरल HTTP उदाहरण है