TypeError: $ .ajax (…) एक फ़ंक्शन नहीं है?


231

मैं एक सरल AJAX अनुरोध बनाने की कोशिश कर रहा हूं जो MySQL डेटाबेस से कुछ डेटा लौटाता है। यहाँ मेरा कार्य नीचे दिया गया है:

function AJAXrequest(url, postedData, callback) {
    $.ajax() ({
        type: 'POST',
        url: url,
        data: postedData,
        dataType: 'json',
        success: callback
    });
}

... और यहाँ है जहाँ मैं इसे कहते हैं, आवश्यक मापदंडों में पार्स:

AJAXrequest('voting.ajax.php', imageData, function(data) {
    console.log("success!");
});

फिर भी, मेरी सफलता कॉलबैक नहीं चलती है (जैसा कि "सफलता! कंसोल में लॉग इन नहीं किया गया है), और मुझे अपने ट्यूटोरियल में एक त्रुटि मिलती है:"

TypeError: $.ajax(...) is not a function.
success: callback

इसका क्या मतलब है? मैंने एजेक्स अनुरोधों से पहले किया है जहां सफलता की घटना $ .ajax के अंदर एक अनाम फ़ंक्शन को ट्रिगर करती है, लेकिन अब मैं एक अलग नाम फ़ंक्शन (इस मामले में, कॉलबैक) चलाने की कोशिश कर रहा हूं। यह कैसे करना है?


2
चाहे jquery शामिल हो
अरुण पी जॉनी

2
इस $ .ajax को बदलें () ({से .ajax ({
प्रभु मूर्ति

3
आपने $.ajaxतर्कों के बिना बुलाया ( $.ajax()) और वापसी मूल्य एक jXXHR वस्तु है, जो एक फ़ंक्शन नहीं है। इसलिए $.ajax()(...)त्रुटि करेगा।
फेलिक्स क्लिंग

2
या तो आप jquery.js को शामिल करने से चूक गए या आपने फ़ंक्शन कॉल के नीचे jquery.js को शामिल कर लिया है या कृपया jQuery.ajax ($ jQuery के साथ बदलें) का प्रयास करें।
प्रणय भारद्वाज

90
मेरे मामले में, ऐसा इसलिए है क्योंकि मैंने JQuery के स्लिम मिनिफ़ाइड संस्करण का उपयोग किया है जो ajax फ़ंक्शन को बाहर
निकालता है

जवाबों:


952

यहां के किसी भी उत्तर ने मेरी मदद नहीं की। समस्या यह थी: मैं jQuery के स्लिम बिल्ड का उपयोग कर रहा था , जिसमें कुछ चीजें हटा दी गई थीं, ajax उनमें से एक थी।

समाधान: बस यहाँ jQuery के नियमित (संकुचित या नहीं) संस्करण डाउनलोड करें और इसे अपनी परियोजना में शामिल करें।


56
यह मेरी समस्या तय है! क्या बिल्ली jQuery ?? $.ajax"स्लिम" बिल्ड से क्यों निकाला जाता है?
समन्यु

57
स्लिम बिल्ड ने एक और शिकार का दावा किया।
ड्रू कैनेडी

49
मैंने बूटस्ट्रैप से कोड कॉपी किया। वे स्लिम वर्जन का इस्तेमाल करते हैं। शायद आप भी?
सिरिल एन।

126

यदि आप jquery के पूर्ण-संस्करण का उपयोग कर रहे हैं तो डबल-चेक करें और कुछ पतले संस्करण नहीं।

मैं jquery के साथ आने वाले jquery cdn-script लिंक का उपयोग कर रहा था। समस्या यह है कि डिफ़ॉल्ट रूप से यह एक पतला है। jquery.js, जिसमें यह ajaxकार्य नहीं है । इसलिए, यदि आप (बूटस्ट्रैप वेबसाइट से कॉपी-पेस्ट) का उपयोग कर रहे हैं, तो स्लिम संस्करण jquery स्क्रिप्ट लिंक, इसके बजाय पूर्ण संस्करण का उपयोग करें।

यह कहना है कि के <script src="https://code.jquery.com/jquery-3.1.1.min.js"> बजाय का उपयोग करें <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"


27

निश्चित नहीं है, लेकिन ऐसा लगता है कि आपके पास अपने कोड में एक सिंटैक्स त्रुटि है। प्रयत्न:

$.ajax({
  type: 'POST',
  url: url,
  data: postedData,
  dataType: 'json',
  success: callback
});

आपके पास अतिरिक्त कोष्ठक $.ajaxथे जिनकी आवश्यकता नहीं थी। यदि आपको अभी भी त्रुटि मिलती है, तो jQuery स्क्रिप्ट फ़ाइल लोड नहीं है।


2
यह एक वाक्यविन्यास त्रुटि नहीं है। वापसी मूल्य सिर्फ एक फ़ंक्शन होने की उम्मीद थी जो यह नहीं है।
फेलिक्स क्लिंग

अहह मैं देख रहा हूँ तो वास्तव में, यह समस्या वास्तव में एक लापता jQuery स्क्रिप्ट फ़ाइल संदर्भ है।
जेसन इवांस

3
इसे इस रूप में देखें $.ajax()();। यह मान्य जावास्क्रिप्ट है। इसका अर्थ है "कॉल करें $.ajaxऔर जो कुछ भी लौटाता है, उसे कॉल करें"। लेकिन $.ajaxएक फ़ंक्शन (जिसे कॉल किया जा सकता है) वापस नहीं करता है, यह एक jqXHRऑब्जेक्ट लौटाता है , इसलिए यह एक त्रुटि फेंकता है। आपका उत्तर सही है, अतिरिक्त ()समस्या है, लेकिन समस्या का वर्णन सही नहीं है (यह एक वाक्यविन्यास त्रुटि नहीं है, अच्छी तरह से कम से कम पार्सर के लिए नहीं)।
फेलिक्स क्लिंग

नहीं, क्षमा करें, यही मैं अपनी पिछली टिप्पणी में बता रहा था; यह एक सिंटैक्स त्रुटि समस्या नहीं है, क्योंकि सिंटैक्स मान्य है, बल्कि jQuery स्क्रिप्ट फ़ाइल के साथ कोई समस्या नहीं है जब $ .ajax () का उपयोग नहीं किया जाता है।
जेसन इवांस

2
नहीं, jquery.js गायब नहीं है (यदि यह त्रुटि होती तो $) के बारे में होती है, लेकिन यह सिंटैक्स त्रुटि नहीं है या तो यह वैध जेएस है। यह वांछित व्यवहार के लिए सिर्फ उचित वाक्यविन्यास नहीं है, इसलिए यह फेलिक्स द्वारा समझाया गया रनटाइम त्रुटि का कारण बनता है।
nnnnnn

9

चेकआउट द जेकरी डॉक्यूमेंटेशन

पदावनति सूचना : jqXHR.success (), jqXHR.error (), और jqXHR.complete () कॉलबैक jQuery 3.0 के रूप में हटा दिए जाते हैं। आप इसके बजाय jqXHR.done (), jqXHR.fail (), और jqXHR.always () का उपयोग कर सकते हैं।


3
यह प्रश्न के लिए बिल्कुल भी प्रासंगिक नहीं है, उनमें से कोई भी पदावनत विधि इस प्रश्न के उपयोग में नहीं है ..
केविन बी

3

आपके AJAX फ़ंक्शन में त्रुटि है, बहुत अधिक ब्रैकेट, इसके बजाय प्रयास करें $.ajax({


3

Jquery न्यूनतम संस्करण का संदर्भ दें जिसमें ajax शामिल है:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

2

एक सिंटैक्स त्रुटि है क्योंकि आपने अजाक्स फ़ंक्शन के बाद कोष्ठक को रखा है और तर्क सूची को परिभाषित करने के लिए कोष्ठक का एक और सेट: -

जैसा कि आपने लिखा है: -

$.ajax() ({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

अजाक्स के आसपास के कोष्ठक को हटाया जाना चाहिए: -

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

1

मुझे एक ही सवाल का सामना करना पड़ा, और मेरा समाधान था: JQuery स्क्रिप्ट जोड़ें।

विशेष रूप से, हमें यह सुनिश्चित करना चाहिए कि जब हम अपने js को फ़ायरफ़ॉक्स / क्रोम के नीचे डीबग करें तो संबंधित JQuery लोड हो।


1

यदि आप बूटस्ट्रैप html टेम्पलेट का उपयोग कर रहे हैं, तो टेम्पलेट के निचले भाग में jquery स्लिम के लिंक को हटाना याद रखें। मैं इस विवरण को यहाँ पोस्ट करता हूँ क्योंकि मैं अभी तक उत्तर नहीं दे सकता हूँ।


0

नोडज में इसे चलाने की कोशिश करने वाले किसी के लिए : यह बॉक्स से बाहर काम नहीं करेगा, क्योंकि jquery को ब्राउज़र (या समान) की आवश्यकता है! मैं बस चलाने के लिए आयात प्राप्त करने की कोशिश कर रहा था और लॉगिंग कर रहा था console.log($)जो लिखा था [Function]और फिर console.log($.ajax)जो वापस आ गया undefined। मेरे पास कोई tscत्रुटि नहीं थी और इंटेलीज से स्वत: पूर्ण था, इसलिए मैं सोच रहा था कि क्या हो रहा है।

तब कुछ बिंदु पर मुझे एहसास हुआ कि nodeसमस्या हो सकती है और टाइपस्क्रिप्ट नहीं। मैंने ब्राउज़र में समान कोड की कोशिश की और यह काम कर गया। इसे काम करने के लिए आपको चलाने की आवश्यकता है:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});

(साभार: https://stackoverflow.com/a/4129032/3022127 )


-1

यह एक उत्तर के लिए बहुत देर हो चुकी है लेकिन यह प्रतिक्रिया भविष्य के पाठकों के लिए उपयोगी हो सकती है।

मैं एक परिदृश्य साझा करना चाहता हूं, जहां कहते हैं कि कई HTML फाइलें ( एक आधार html और कई उप-HTML ) और $ .ajax का उपयोग उप-HTML में से एक में किया जा रहा है।

मान लें कि सब-HTML में, js URL " https://code.jquery.com/jquery-3.5.0.js " के माध्यम से और आधार / माता-पिता HTML में URL के माध्यम से शामिल है - " https: //code.jquery .com / jquery-3.1.1.slim.min.js ", फिर JS के सबसे पतले संस्करण का उपयोग उन सभी पृष्ठों पर किया जाएगा जो इस उप-HTML के साथ-साथ ऊपर उल्लेखित आधार HTML का भी उपयोग करते हैं।

यह बूटस्ट्रैप फ्रेमवर्क का उपयोग करने के मामले में विशेष रूप से सच है जो " https://code.jquery.com/jquery-3.1.1.slim.min.js " का उपयोग करके js को लोड करता है ।

इसलिए समस्या को हल करने के लिए, यह सुनिश्चित करने की आवश्यकता है कि सभी पृष्ठों में, js URL " https://code.jquery.com/jquery-3.5.0.js " के माध्यम से शामिल है या जो भी नवीनतम URL है जिसमें सभी JQuery लाइब्रेरीज़ शामिल हैं।

मुझे इस जवाब की ओर इशारा करने के लिए लिली एच। को धन्यवाद ।


-2

मुझे अपना अनुभव साझा करने दें:

मेरा HTML पेज डिज़ाइनर उपयोग:

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>

जब मैं एक साधारण AJAX अनुरोध बनाता हूं, तो यह कहते हुए एक त्रुटि हो जाती है, TypeError: $ .ajax (…) कोई फ़ंक्शन नहीं है

तो, मैं जोड़ता हूं:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

फिर, यह पूरी तरह से मेरे लिए कम से कम काम करता है।


नहीं। लोडिंग jQuery स्लिम और फिर तुरंत jQuery के साथ यह ओवरराइटिंग पूरी तरह से व्यर्थ और बैंडविड्थ की बर्बादी है।
क्वेंटिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.