2012-02-06 12 views
6

का उपयोग कर AJAX सबमिशन फॉर्म मुझे बोतल ढांचे का उपयोग करके AJAX संचार काम करने में कुछ समस्याएं आ रही हैं। यह मेरी पहली बार AJAX का उपयोग कर रहा है, इसलिए संभवतः मेरे पास मूलभूत बातें गलत हैं। उम्मीद है कि एक बोतल/AJAX गुरु इस नौसिखिया को सही दिशा में इंगित कर सकते हैं।बोतल (पायथन)

#!/usr/bin/env python 

from bottle import route, request, run, get 


# Form constructor route 

@route('/form') 
def construct_form(): 
    return ''' 

<html> 
<head> 
<script type="text/javascript"> 

    function loadXMLDoc() 
    { 
     xmlhttp = new XMLHTTPRequest(); 
     xmlhttp.onReadyStateChange = function() 
     { 
      if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
      { 
       document.getElementById("responseDiv").innerHTML = xmlhttp.responseText; 
      } 
     } 

    xmlhttp.open("GET", "/ajax", true); 
    xmlhttp.send(); 
    } 

</script> 
</head> 

<body> 

    <form> 
     <input name="username" type="text"/> 
     <input type="button" value="Submit" onclick="loadXMLDoc()"/> 
    </form> 
    <div id="responseDiv">Change this text to what you type in the box above.</div> 

</body> 
</html> 

    ''' 

# Server response generator 

@route('/ajax', method='GET') 
def ajaxtest(): 
    inputname = request.forms.username 
    if inputname: 
     return 'You typed %s.' % (inputname) 
    return "You didn't type anything." 

run(host = 'localhost', port = '8080') 
+0

मैं क्रोम में परीक्षण कर रहा हूँ, इसलिए का उपयोग कर आईई विशिष्ट कोड की जरूरत नहीं है - मामला किसी में उस के बारे में सोचता है। – patrickn

उत्तर

4

यहाँ कुछ मुद्दों कर रहे हैं: यहाँ कोड मैं का उपयोग कर रहा है।

  1. जावास्क्रिप्ट केस संवेदनशील है। XMLHTTPRequestXMLHttpRequest होना चाहिए। आपको अपने जावास्क्रिप्ट कंसोल में इसके बारे में एक त्रुटि दिखाई देनी चाहिए थी।
  2. onReadyStateChangeonreadystatechange होना चाहिए।
  3. आप उपरोक्त दो मुद्दों को ठीक तो आपके AJAX कॉल काम करेंगे, लेकिन आप केवल कभी मिल जाएगा 'तुम कुछ भी नहीं लिखा है।' प्रतिक्रिया। ऐसा इसलिए है क्योंकि आप जीईटी का उपयोग कर रहे हैं। आपको अपना कोड बदलना होगा ताकि POST विधि का उपयोग करके फॉर्म मान पोस्ट किए जाएं।

इसके अलावा, आप AJAX करने के लिए jQuery का उपयोग क्यों नहीं कर रहे हैं? यह आपके जीवन को अधिक आसान बना देगा। :)

+0

धन्यवाद, मुझे पता था कि यह कुछ आसान होने वाला था। jQuery का उपयोग नहीं कर के रूप में - मैं अपने कोडिंग कैरियर के इस स्तर पर "जादू" से चिढ़ हूँ, और वास्तव में देखने के लिए कैसे चीजें काम कर रहे हैं इससे पहले कि मैं आरामदायक पर चलती हूँ की जरूरत है। इसलिए बोतल का उपयोग (अभी भी बहुत सारे जादू, लेकिन न्यूनतम) भी। – patrickn

+1

यह एक अच्छा कारण है कि jQuery (और Django) का उपयोग न करें। अपनी बोतल परियोजना पर शुभकामनाएँ। यह काम करने के लिए एक मजेदार ढांचा है। – Alex

संबंधित मुद्दे