मैं क्रोम एक्सटेंशन पर काम कर रहा हूं जो अनिवार्य रूप से एक साधारण कस्टम Google फ़ॉर्म है जो प्रतिक्रिया स्प्रेडशीट पर पोस्ट करेगा। मैं निम्नलिखित समारोह मिला सफलतापूर्वक भेजने के लिए और केवल एक बार डेटा को भरने के लिए है, लेकिन फिर कभी नहीं:स्प्रेडशीट्स पर jQuery और अजाक्स के माध्यम से Google फॉर्म डेटा कैसे पोस्ट करें
function postFormToGoogle() {
var timeOne = $("#time1hour").val();
var timeTwo = $('#time2hour').val();
var timeThree = $('#time3hour').val();
$.ajax({
url: "https://docs.google.com/forms/d/FORMKEY/formResponse",
beforeSend: function (xhr) {
xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
},
data: { "entry_856586387": timeOne,
"entry_244812041": timeTwo,
"entry_2138937452": timeThree },
type: "POST",
dataType: "xml",
xhrFields: {
withCredentials: true
},
statusCode: {
0: function() {
document.getElementById("message").innerHTML = "Your form has been submitted!";
window.location.replace("ThankYou.html");
},
200: function() {
document.getElementById("message").innerHTML = "Your form has been submitted!";
console.log("Success");
window.location.replace("ThankYou.html");
}
}
});
}
मैं CORS अनुरोध हेडर क्योंकि मैं एक नहीं 'पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति' चेतावनी हो रही थी को शामिल करने के लिए किया था कि मेरे अनुरोध को अवरुद्ध कर दिया।
यह एक विस्तार किया जा रहा है, मैं भी निम्न अनुमतियों manifest.json फ़ाइल को जोड़ा गया: इस बिंदु पर
"permissions": [
"http://docs.google.com",
"https://docs.google.com",
"https://*.google.com",
]
, मुझे यकीन है कि वास्तव में क्या पोस्ट करने से डेटा रोकने नहीं कर रहा हूँ। संभावित संकेतक यह हो सकते हैं कि फॉर्म जमा करते समय मुझे "अनंतिम शीर्षलेख दिखाए जाते हैं" सावधानी बरतती है और सर्वर प्रतीक्षा (टीटीएफबी) समय के अनुसार प्रतिक्रिया देने के लिए बहुत लंबा रास्ता ले रहा है।
मैं कोड में गलत कहां जा रहा हूं? (यह किसी कारण से, एक बार काम करता था।) स्प्रेडशीट्स को कस्टम फॉर्म पोस्ट करने के लिए वहां कोई वैकल्पिक समाधान है?
सर्वर से वापस 'डेटाटाइप' क्या है? 'डेटा टाइप करें: "एचटीएमएल" पर स्विच करें,' अगर यह 'html' है। – gui47
वास्तव में, सर्वर से प्रतिक्रिया शीर्षलेख 'सामग्री-प्रकार' 'html' है। मैंने तदनुसार 'डेटा टाइप' को स्विच किया, लेकिन डेटा अभी भी पॉपुलटिंग नहीं कर रहा है। हालांकि मुझे हेडर अनुरोध के लिए "अनंतिम शीर्षलेख दिखाए गए हैं" चेतावनी नहीं मिल रही है। – corcovado
'document.getElementById (" message ") का उपयोग करें। Document.getElementById (" message ") के बजाय आंतरिक टेक्स्ट '। आंतरिक HTML': https://developer.chrome.com/extensions/xhr। क्या आप सामग्री स्क्रिप्ट में क्रॉस-डोमेन एक्सएचआर लागू करते हैं? – gui47