2010-11-25 17 views
15

मैं POST विधि का उपयोग कर XMLHttpRequest लिखने की कोशिश कर रहा हूं। मैंने जीईटी विधि का उपयोग कर अतीत में XMLHttpRequest का उपयोग करने में कामयाब रहा है लेकिन पोस्ट के साथ संघर्ष कर रहा हूं।AJAX XMLHttpRequest POST

var xmlhttp = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

var url = "http://www.mysite.com/script.php"; 
var params = "var=1"; 
xmlhttp.open("POST", url, true); 
xmlhttp.send(params); 

यह मूल रूप से एक PHP स्क्रिप्ट जो फिर एक डेटाबेस के लिए कुछ जानकारी कहते हैं कॉल:

यहाँ मेरी कोड है।

+0

आपको क्या त्रुटि है? –

+0

कोई त्रुटि नहीं है, और क्रोम इंस्पेक्टर के अनुसार कोड ठीक है। – diggersworld

उत्तर

-6

ठीक है, + साथ %20 के सभी उदाहरणों को प्रतिस्थापित करना चाहिए मैं इसे सुलझाने के लिए प्रबंधित किया है।

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

आपके समर्थन के लिए सभी को धन्यवाद।

49

आप स्पष्ट रूप से Content-type शीर्षलेख पर सेट करना भूल गए हैं, जो POST अनुरोध करते समय आवश्यक है।

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

इसके अलावा, encodeURIComponent उपयोग करने के लिए ठीक से अपने मापदंडों एन्कोड करने के लिए मत भूलना जैसे:

var params = "var=" + encodeURIComponent("1"); 

(इस विशिष्ट उदाहरण में, यह आवश्यक नहीं है, लेकिन जब + चीजों की तरह विशेष वर्ण का उपयोग कर जाना होगा यदि आप पैरामीटर टेक्स्ट एन्कोड नहीं करते हैं तो बहुत गलत है)।

अद्यतन - आप भी तरह

var params = params.replace(/%20/g, '+'); 
+0

सामग्री प्रकार और एन्कोडिंग जोड़ने का प्रयास किया लेकिन प्रसंस्करण स्क्रिप्ट अभी भी बुलाया नहीं जा रहा है। – diggersworld

+0

@ डिगर्स: प्रोसेसिंग स्क्रिप्ट कैसा दिखता है? क्या आप इसे शामिल करने के लिए अपने प्रश्न को संशोधित कर सकते हैं? –

+2

यहां 'सामग्री-प्रकार' शीर्षलेख होना चाहिए, न कि 'सामग्री-प्रकार' ... –