लोड करने के बाद मैं एक बाहरी एपीआई के लिए एक क्रॉस-डोमेन अजाक्स अनुरोध का उपयोग कर रहा हूं। हर बार यह विफल रहता है, सांत्वना संदेश के साथ:असहज टाइपरर: संपत्ति ... कोई फ़ंक्शन नहीं है - पृष्ठ
Uncaught TypeError: Property 'photos' of object [object DOMWindow] is not a function
JSON को देखते हुए वापस आ जा रहा है, यह मान्य JSON है, इसलिए यह बाहरी API की गलती नहीं है।
मैं विश्वसनीय रूप से त्रुटि को पुन: उत्पन्न नहीं कर सकता: त्रुटि को ट्रिगर करने वाला एकमात्र कारक तब होता है जब मैं अनुरोध को तेज़ी से और बार-बार कॉल करता हूं।
इस मामले में जब मैं उपयोगकर्ता को Google मानचित्र (मानचित्र पर मार्कर जोड़ने के लिए) चलाता है तो यह अजाक्स अनुरोध को कॉल कर रहा है, और ऐसा होता है यदि उपयोगकर्ता बहुत तेज़ी से घूमता है।
// Code located inside an external JS file referenced inside the head
// Not wrapped inside document.ready - but all the code setting up
// the map (calling a function which calls a function which adds the
// tilesloaded listener) *is* inside document.ready
function addMarkers() {
var pm_url = "http://www.cyclestreets.net/api/photos.json?key=" + MY_KEY;
$.ajax({
url: pm_url,
crossDomain: true,
contentType: "application/json",
dataType: 'jsonp',
data: pmdata,
jsonpCallback: 'photos',
success: function(data) {
// TBA
},
error: function() {
alert("Sorry, error retrieving photos!");
}
});
}
google.maps.event.addListener(map, 'tilesloaded', function() {
addMarkers(map);
});
थोड़ा Google पर करने के बाद, त्रुटि Uncaught TypeError: Property 'photos' of object [object DOMWindow] is not a function
आम तौर पर तब होता है जब jQuery लोड नहीं की गई लगता है:
यहाँ मेरी कोड के प्रासंगिक भागों रहे हैं।
हालांकि, मुझे नहीं लगता कि यह यहां प्रासंगिक है, क्योंकि फ़ंक्शन को मानचित्र के टाइललोडेड ईवेंट से बुलाया जाता है - और यह आम तौर पर पहली बार आग नहीं लगाता है, यह पांच या छह तीव्र मानचित्र आकार के बाद आग लग जाता है । तो अगर यह एक बार काम करता है, तो पृष्ठ निश्चित रूप से jQuery के बारे में 'भूल गया' नहीं हो सकता है?
आपकी सलाह के लिए धन्यवाद।
लाइन 'jsonp कॉलबैक:' फोटो 'को हटाने का प्रयास करें, और देखें कि यह काम करता है या नहीं। JQuery को उन चीजों को संभालने के लिए बेहतर है। जब आप इसमें हों, तो क्या आपको वास्तव में उस तरह के 'contentType' पैरामीटर सेट की आवश्यकता है? यह डेटा भेजने के लिए है, इसे प्राप्त नहीं कर रहा है ... – davin
इसका मतलब है कि फोटो फ़ंक्शन/विधि नहीं है इसलिए आपने कॉलबैक नहीं दिया है, इसलिए कहीं आपके पास 'फ़ंक्शन फोटो() {...} ' – Val