का उपयोग करते समय यह सवाल वर्षीय अनुत्तरित प्रश्न के लगभग समान है चर:पीएचपी पोस्ट परिभाषित नहीं क्रोम + एक्सएचआर
HTTP-POST XHR not working in chrome।
मैं एक समाधान खोजने की उम्मीद कर रहा था और मूल प्रश्न की तुलना में अधिक जानकारी प्रदान कर सकता हूं।
पृष्ठभूमि
मैं एक Sever साइड PHP स्क्रिप्ट है कि एक फार्म या एक्सएचआर अनुरोध से पोस्ट डेटा लेने के लिए माना जाता है की है। जब मैं जमा करने के लिए एक फॉर्म का उपयोग कर साइट का परीक्षण करता हूं, तो यह क्रोम और आईई 9 में काम करता है। हालांकि, जब मैं XHR का उपयोग कर अनुरोध उत्पन्न करता हूं, तो क्लाइंट पक्ष पर क्रोम का उपयोग करते समय php POST चर अपरिभाषित होता है। यह व्यवहार असंगत है: लगभग 20 में से 1 प्रयास, PHP डेटा स्वीकार करता है।
मैंने php://input
स्ट्रीम की जांच की है और देखें कि पोस्ट डेटा सभी मामलों में सर्वर पर भेजा जा रहा है; और ध्यान दें कि HTTP शीर्षलेखों में से कुछ छोटे ($_SERVER
) परीक्षण मामलों के बीच अलग हैं।
कोड
सर्वर साइड:
<?php
echo file_get_contents("php://input") . "\n";
print_r($_SERVER);
print_r($_POST);
?>
क्लाइंट साइड फार्म संस्करण (क्रोम और IE9 दोनों काम)
<form action="scriptName.php" method="post">
Field: <input type="text" name="myField"><br>
<input type="submit" value="Submit">
</form>
क्लाइंट साइड एक्सएचआर संस्करण (IE9 हमेशा काम करता है, जो Chrome के काम लगभग 5% समय)
<script>
function postToURL(url,data)
{
// Typical XHLHttpRequest declarations are removed for brevity
// - checks browser type and declares xmlhttp accordingly
// - defines a onreadystatechange handle
xmlhttp.open("POST",url,false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(data);
}
</script>
...
<form>
<button type="button" onClick="postToURL('scriptname.php','myField=test');">
Test
</button>
</form>
आउटपुट
सभी मामलों अनुरोध शरीर डेटा (php://input
) में एक ही मान देता है। हेडर ज्यादातर एक ही हैं, लेकिन क्रोम क्रोम + एक्सएचआर मामले को छोड़कर एक्सएचआर मोड
$_POST
चर [myField] => test
के रूप में परिभाषित किया गया है में एक [HTTP_PRAGMA] => no-cache
कहते हैं।
प्रश्न
कहाँ समस्या होने की संभावना हो रहा है? क्या संभव है HTTP हेडर के साथ कुछ गड़बड़ है, या मुझे सर्वर-साइड दिखाना चाहिए। कोई विचार?
में मदद करता है 'PostToURL()' कब कहा जाता है? – jeremy
इसे बटन 'ऑनक्लिक' ईवेंट से बुलाया जाता है। – nicholas
क्या आप हमें दिखा सकते हैं कि कृपया? – jeremy