TypeError: $ .axax (…) কোনও ফাংশন নয়?


231

আমি একটি সাধারণ এজেএক্স অনুরোধ তৈরি করার চেষ্টা করছি যা মাইএসকিউএল ডাটাবেস থেকে কিছু ডেটা ফেরত দেয়। এখানে আমার ফাংশন নীচে:

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
এই aj .জ্যাক্স () ({থেকে $ .জ্যাক্স ({
প্রভু মুর্তি

3
আপনি $.ajaxআর্গুমেন্ট ( $.ajax()) ছাড়াই কল করেছেন এবং রিটার্ন মান একটি jqXHR অবজেক্ট, যা কোনও ফাংশন নয়। সুতরাং $.ajax()(...)একটি ত্রুটি নিক্ষেপ করবে।
ফেলিক্স ক্লিং

2
হয় আপনি jquery.js অন্তর্ভুক্ত করতে মিস করেছেন অথবা আপনি jquery.js ফাংশন কলের নীচে অন্তর্ভুক্ত করেছেন বা দয়া করে jQuery.ajax চেষ্টা করুন (jQuery দিয়ে replace প্রতিস্থাপন করুন)।
প্রণয় ভরদ্বাজ

90
আমার ক্ষেত্রে, এটা কারণ আমি ব্যবহৃত পাতলা minified যা আউট Ajax ফাংশন লাগে JQuery এর সংস্করণ
TomNg

উত্তর:


951

এখানে উত্তরগুলির কোনওটিই আমাকে সাহায্য করেনি। সমস্যাটি ছিল: আমি jQuery এর পাতলা বিল্ডটি ব্যবহার করছিলাম , যা কিছু জিনিস মুছে ফেলেছিল, এজ্যাক্স সেগুলির মধ্যে একটি।

সমাধান: কেবল এখানে jQuery এর নিয়মিত (সংকুচিত বা না) সংস্করণটি ডাউনলোড করুন এবং এটি আপনার প্রকল্পে অন্তর্ভুক্ত করুন।


56
এই আমার সমস্যা স্থির! কি হ্যাক jQuery ?? $.ajax"স্লিম" বিল্ড থেকে কেন সরানো হয়েছে?
সামনাউ

55
স্লিম বিল্ড আরেকটি শিকার দাবি করেছে।
ড্রিউ কেনেডি

48
আমি বুটস্ট্র্যাপ থেকে কোডটি অনুলিপি করেছি। তারা স্লিম সংস্করণ ব্যবহার করে। তুমিও হয়তো?
সাইরিল এন।

126

আপনি jquery এর সম্পূর্ণ সংস্করণ ব্যবহার করছেন এবং কিছু স্লিম সংস্করণ নয় কিনা ডাবল-চেক করুন।

আমি jquery সিডিএন-স্ক্রিপ্ট লিঙ্কটি ব্যবহার করছিলাম যা jquery সহ আসে। সমস্যাটি হ'ল ডিফল্ট হিসাবে এটি হ'ল slim.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
এটি কোনও সিনট্যাক্স ত্রুটি নয়। প্রত্যাবর্তনের মানটি এমন কোনও ফাংশন হিসাবে প্রত্যাশিত ছিল যা এটি নয়।
ফেলিক্স ক্লিং

আহ্ আমি দেখছি। সুতরাং সত্যিই, এই সমস্যাটি হ'ল জ্যাকুয়ের স্ক্রিপ্ট ফাইলের রেফারেন্সটি আসলেই।
জেসন ইভান্স

3
না $.ajax()();। হিসাবে এটি তাকান । এটি বৈধ জাভাস্ক্রিপ্ট। এর অর্থ "কল $.ajaxএবং যা কিছু ফিরে আসে, সেটিকেও কল করুন"। কিন্তু $.ajaxকোনও ফাংশন ফেরত দেয় না (যা বলা যেতে পারে) এটি কোনও jqXHRবস্তু ফেরত দেয়, তাই এটি ত্রুটি ছুঁড়ে দেয়। আপনার উত্তরটি সঠিক, অতিরিক্ত ()সমস্যা রয়েছে তবে সমস্যার বর্ণনাটি সঠিক নয় (এটি কোনও সিনট্যাক্স ত্রুটি নয়, অন্তত পার্সারের পক্ষে নয়) not
ফেলিক্স ক্লিং

না, দুঃখিত, আমি আমার আগের মন্তব্যে এটি বলেছিলাম; যে এটি সিনট্যাক্স ত্রুটিযুক্ত সমস্যা নয়, যেহেতু সিনট্যাক্সটি বৈধ, বরং jQuery স্ক্রিপ্ট ফাইলের সাথে একটি সমস্যা load .ajax () ব্যবহৃত হয় না।
জেসন ইভান্স

2
না, jquery.js অনুপস্থিত (এটি যদি ত্রুটিটি সম্পর্কে হত তবে $) এটি বৈধ জেএস এর মধ্যে একটি বাক্য গঠন ত্রুটি নয়। এটি পছন্দসই আচরণের জন্য উপযুক্ত সিনট্যাক্স নয়, তাই এটি ফেলিক্সের ব্যাখ্যা অনুসারে রানটাইম ত্রুটির কারণ হয়ে দাঁড়ায়।
nnnnnn

9

জেকারি ডকুমেন্টেশন চেকআউট করুন

অবমানন নোটিশ : jqXH. 3.0 হিসাবে jqXHR.success (), jqXHR.error (), এবং jqXHR.complete () কলব্যাকগুলি সরানো হয়েছে। আপনি এর পরিবর্তে jqXHR.done (), jqXHR.fail (), এবং jqXHR.always () ব্যবহার করতে পারেন।


3
এটি মোটেও প্রশ্নের সাথে প্রাসঙ্গিক নয়, এই অবহিত পদ্ধতিগুলির
কেভিন বি

3

আপনার AJAX ফাংশনে আপনার একটি ত্রুটি রয়েছে, অত্যধিক বন্ধনীর পরিবর্তে চেষ্টা করুন $.ajax({



2

আপনি আর্জ্যাক্স ফাংশন পরে প্রথম বন্ধনী স্থাপন করেছেন এবং যুক্তি তালিকাটি সংজ্ঞায়িত করার জন্য বন্ধুত্বের আরও একটি সেট রেখেছেন এমন একটি বাক্য গঠন ত্রুটি রয়েছে:

যেমনটি আপনি লিখেছেন: -

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

এজ্যাক্সের চারপাশের প্রথম বন্ধনীটি হ'তে হবে: -

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

1

আমি একই প্রশ্নের মুখোমুখি হয়েছিলাম, এবং আমার সমাধানটি ছিল: জিকুয়েরি স্ক্রিপ্ট যুক্ত করুন।

বিশেষত, যখন আমরা ফায়ারফক্স / ক্রোমের অধীনে আমাদের জেএসগুলি ডিবাগ করি তখন আমাদের সংশ্লিষ্ট জিকুয়েরি লোড হয়েছে কিনা তা নিশ্চিত করা উচিত।


1

আপনি যদি বুটস্ট্র্যাপ এইচটিএমএল টেমপ্লেট ব্যবহার করছেন তবে মনে রাখবেন যে টেমপ্লেটের নীচে 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

উত্তরের জন্য এটি অনেক দেরি হলেও ভবিষ্যতের পাঠকদের জন্য এই প্রতিক্রিয়া সহায়ক হতে পারে।

আমি এমন একটি দৃশ্য ভাগ করতে চাই যেখানে বলুন যে একাধিক এইচটিএমএল ফাইল রয়েছে ( একটি বেস এইচটিএমএল এবং একাধিক সাব-এইচটিএমএল ) এবং $ .এজ্যাক্স সাব-এইচটিএমএলগুলির মধ্যে একটিতে ব্যবহৃত হচ্ছে।

ধরুন সাব-এইচটিএমএলে, জেএসগুলি ইউআরএল " https://code.jquery.com/jquery-3.5.0.js " এর মাধ্যমে এবং বেস / প্যারেন্ট HTML এ URL এর মাধ্যমে অন্তর্ভুক্ত করা হয়েছে - " https: //code.jquery .com / jQuery-3.1.1.slim.min.js ", তারপরে স্লিম সংস্করণ সমস্ত পৃষ্ঠাগুলিতে ব্যবহার করা হবে যা এই সাব-এইচটিএমএল পাশাপাশি উপরে বর্ণিত বেস এইচটিএমএল ব্যবহার করে।

এটি বিশেষত বুটস্ট্র্যাপ ফ্রেমওয়ার্ক ব্যবহারের ক্ষেত্রে সত্য যা " https://code.jquery.com/jquery-3.1.1.slim.min.js ব্যবহার করে জেএস লোড করে using " ।

সুতরাং সমস্যা সমাধানের জন্য, নিশ্চিত করতে হবে যে সমস্ত পৃষ্ঠায়, জেএসগুলি URL " https://code.jquery.com/jquery-3.5.0.js এর মাধ্যমে অন্তর্ভুক্ত করা হয়েছে" " এর বা সমস্ত JQuery লাইব্রেরি সমন্বিত সর্বশেষতম URL আছে।

আমাকে এই উত্তরের দিকে নির্দেশ করার জন্য লিলি এইচকে ধন্যবাদ ।


-2

আমাকে আমার অভিজ্ঞতা শেয়ার করুন:

আমার এইচটিএমএল পৃষ্ঠা ডিজাইনার ব্যবহার:

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

যখন আমি একটি সাধারণ এজেএক্স অনুরোধ তৈরি করি, ত্রুটি পেয়ে এটি বলে যে, টাইপআরার: $ .জ্যাক্স (…) কোনও ফাংশন নয়

সুতরাং, আমি যোগ:

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

তাহলে, এটি আমার পক্ষে কমপক্ষে পুরোপুরি কার্যকর হয় works


না। JQuery স্লিম লোড করা এবং তারপরে তাত্ক্ষণিকভাবে jQuery এর সাথে ওভাররাইট করা সম্পূর্ণ অর্থহীন এবং ব্যান্ডউইদথের অপচয়।
কোয়ান্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.