এজ্যাক্স কেন এইচটিটিপি স্থিতি কোড 0 ফিরিয়ে দিচ্ছে?


139

কোনও কারণে, এজেএক্স ব্যবহার করার সময় (আমার সাথে) উন্নত অ্যাপ্লিকেশন) ব্রাউজারটি কেবল আপলোড করা বন্ধ করে দেয় এবং এর স্থিতি কোডগুলি দেয় 0। কেন এমন হয়?

উত্তর:


110

আরেকটি মামলা:

0আপনি যদি একটি এএএএক্সএক্স কল প্রেরণ করেছেন এবং এজ্যাক্স প্রতিক্রিয়া পাওয়ার আগে ব্রাউজারের একটি রিফ্রেশ ট্রিগার হয়ে থাকে তবে এর একটি স্ট্যাটাস কোড পাওয়া সম্ভব হতে পারে । AJAX কল বাতিল হয়ে যাবে এবং আপনি এই স্থিতিটি পাবেন।


9
এটি নির্দেশ করার জন্য ধন্যবাদ, এটি আমাকে বুঝতে পেরেছিল যে (পাশাপাশি একটি ব্রাউজার রিফ্রেশ) ফর্ম জমা দেওয়ার ফলে এজ্যাক্স কলটি বাতিল করতে পারে।
ম্যাগনাস স্মিথ

1
শুধু করুন<form onsubmit="return false;">
হিটার

1
@ হিটারের পরামর্শটি আমার পক্ষে কাজ করেছে - আমার ফর্মের "জমা দিন" বোতামটি পৃষ্ঠাটি সতেজ করে তুলছিল, ইতিমধ্যে জাভাস্ক্রিপ্টটি "সাবমিট" বোতামটি ক্লিক করার পরে একটি অজ্যাক্স কল চালানোর চেষ্টা করছিলাম।
ফলাফলটি

আরে, আমি একটি মিস করেছিe.preventDefault();
স্পার্ক

97

আমার অভিজ্ঞতায় আপনি 0 টির একটি স্থিতি দেখতে পাবেন যখন:

  • ক্রস-সাইট স্ক্রিপ্টিং করা (যেখানে অ্যাক্সেস অস্বীকার করা হয়েছে)
  • পৌঁছনীয় না এমন একটি URL (টাইপো, ডিএনএস সমস্যাগুলি ইত্যাদি) অনুরোধ করা হচ্ছে
  • অনুরোধটি অন্যথায় বাধা দেওয়া হয়েছে (আপনার বিজ্ঞাপন ব্লকারটি পরীক্ষা করুন)
  • উপরের মত, যদি অনুরোধটি বাধা দেওয়া হয় (ব্রাউজারটি পৃষ্ঠা থেকে সরে যায়)

1
সংযোগটি অস্বীকার করা হলে আমি তা পেয়ে যাচ্ছি। উদাহরণস্বরূপ, ভিজ্যুয়াল স্টুডিওতে আমার সাইটটি ডিবাগ করার সময়, আমি যদি ডিবাগিং সেশনটি বন্ধ করে রেখেছি, যে কোনও অনুরোধ যা সংযোগ করার চেষ্টা করেছে তা নেট :: ERR_CONNECTION_REFUSED পেয়ে যাবে এবং স্থিতি কোডটি শূন্য হবে। এটি উপলব্ধি করে, যেহেতু আপনি যদি কোনও সার্ভারের সাথে সংযোগ না দিতে পারেন তবে কোনও স্ট্যাটাস কোড না পেয়ে থাকতে পারে one
ত্রিণকো

আমি নিশ্চিত করতে পারি. আমার ওয়েব সার্ভারটি বন্ধ করে দেওয়ার পরে আমি স্থিতি == 0 পেয়েছি।
9 ইএসডিএক্স 9 আরভিজে 0lo

'ক্রস-সাইট স্ক্রিপ্টিং' এর কারণে আমার ত্রুটি রয়েছে; আমার কি করা উচিৎ?

1
@ নাসিমজাহেদনিয়া সন্ধান করছে সিআরএস ... আপনি যে সার্ভারটি অ্যাক্সেস করতে চেষ্টা করছেন তা আপনার ডোমেন থেকে ক্রস সাইট স্ক্রিপ্টিংয়ের জন্য অনুমতি দেওয়ার দরকার।
ল্যাংডন

আমি বিভ্রান্ত এইচটিটিপি ত্রুটি কোডটি ফেরত পাওয়ার কোনও উপায় নেই? এটি এখানে অনেকগুলি ভিন্ন মামলা (415, 404, ইত্যাদি?)
এডউইন ইভান্স

8

ব্যবহার করার সময় এখানে একই সমস্যা <button onclick="">submit</button>। তারপরে ব্যবহার করে সমাধান করুন<input type="button" onclick="">


1
বিঙ্গো !! যে কেউ কেন ব্যাখ্যা করতে পারে?
জর্জে

3
ডিফল্টরূপে এইচটিএমএল বোতামের প্রকারটি 'জমা' হয়, সুতরাং এটি ক্লিক করলে ফর্ম ডেটা জমা দেওয়ার চেষ্টা করা হবে। সুতরাং এটি ক্লিক ক্রিয়াকলাপ কার্যকর করবে, তারপরে জমা দেওয়ার চেষ্টা করবে। আপনি যদি 'বাটন' টাইপ ব্যবহার করেন তবে এটি আর ডিফল্ট টাইপ নয় এবং কেবল অন্লিকই সম্পাদন করবে।
ক্রিস্টোফ রাউসি

7

স্থিতি কোড 0 এর অর্থ হল অনুরোধ করা ইউআরএল পৌঁছনীয় নয়। পরিবর্তন করে // কিছু / কিছু করুন: http থেকে HTTPS: // কিছু / কিছু আমার জন্য কাজ করেন। স্থিতি কোডটি 0 হলে অন্য ব্রাউজারগুলি ডান না করে আইই একটি "অনুমতি অস্বীকৃত" বলে ত্রুটি ছুঁড়ে দেয়।


এই ক্ষেত্রে, ক্রোম বর্তমানে সময়টি শেষ না হওয়া অবধি অনুরোধটিকে "স্থগিত" অবস্থায় রেখে দেবে। এটি সেই সার্ভারের পূর্ববর্তী অনুরোধে কোনও কঠোর-পরিবহন-সুরক্ষা পতাকা ফিরিয়ে দেওয়ার কারণে ঘটতে পারে, বা এটি অনুরোধের সাথে প্রেরণ করা কোনও কুকির সুরক্ষিত / এইচটিটিপি কেবল পতাকা হতে পারে ।
শেন হিউজেস

7

এটি লক্ষণীয় গুরুত্বপূর্ণ যে আজাকাক্স কলগুলি এমন একটি সেশনের মধ্যেও ব্যর্থ হতে পারে যা www এর সাথে উপরিবর্তিত কোনও নির্দিষ্ট ডোমেন সহ কুকি দ্বারা সংজ্ঞায়িত হয়। তারপরে আপনি যখন আপনার পিএইচপি স্ক্রিপ্ট কল করবেন যেমন www ছাড়াই। ইউআরএল-এর উপসর্গ, কলটি ব্যর্থ হবে এবং বিপরীতমুখী হবে।


4

এই নিবন্ধটি আমাকে সাহায্য করেছে। আমি এজেএক্সের মাধ্যমে ফর্ম জমা দিচ্ছিলাম এবং ব্যবহার করতে ভুলে গেছি return false(আমার এজ্যাক্স অনুরোধের পরে) যা ক্লাসিক ফর্ম জমা দেওয়ার দিকে পরিচালিত করেছিল কিন্তু আশ্চর্যের সাথে এটি সম্পন্ন হয়নি।


ভোর আমি এই বিষয়টিকে ঘৃণা করি যে আমি আবার এটির দ্বারা ধরা হয়েছিল! <form onsubmit="return false;">কৌতুকটি করেছে
হিটার

3

কারণ আপনি অ্যাজাক্স স্থিতি গুগল করার সময় এটি প্রদর্শিত হয় 0 আমি কিছু টিপ ছেড়ে যেতে চেয়েছিলাম যা আমাকে সময় নষ্ট করা সময় সময় নেয় ... আমি পিএইচপি পরিষেবা কল করতে এজ্যাক্স ব্যবহার করছিলাম যা কোডিগিটারের জন্য ফিলের আরইএসএস নিয়ন্ত্রণকারী হিসাবে ঘটেছে (নিশ্চিত না যে এটি আছে কিনা এটির সাথে কিছু করা বা না করা) এবং 0, রেডিস্টেট 0 স্ট্যাটাস পেতে থাকি এবং এটি আমার বাদাম চালাচ্ছিল। আমি এটি ডিবাগ করছি এবং লক্ষ্য করেছি যে কখন আমি প্রতিবেদনটি প্রস্থান করার পরিবর্তে প্রতিধ্বনিত হবে এবং ফিরে আসব আমি একটি সাফল্য পাব। অবশেষে আমি ডিবাগিংটি বন্ধ করে দিয়ে চেষ্টা করেছি এবং এটি কার্যকর হয়েছে। দেখে মনে হচ্ছে পিএইচপি সহ এক্সডিব্যাগ ডিবাগারটি কোনওভাবে প্রতিক্রিয়াটি পরিবর্তন করছে। যদি আপনি কোনও পিএইচপি ডিবাগার ব্যবহার করেন তবে এটি যদি সাহায্য করে কিনা তা দেখার জন্য এটি বন্ধ করার চেষ্টা করুন।


3

আমি আরেকটি কেস পেয়েছি যেখানে jquery আপনাকে স্থিতি কোড 0 দেয় - যদি কোনও কারণে XMLHttpRequest সংজ্ঞায়িত না করা হয় তবে আপনি এই ত্রুটিটি পেয়ে যাবেন।

স্পষ্টতই ওয়েবে এটি ঘটবে না, তবে রাতের বেলা ফায়ারফক্স বিল্ডে একটি বাগ এটি লিখেছিল এমন একটি অ্যাড-অনে ক্রপ হয়ে যায়। :)


1
আপনি একটি কথা বলেছেন, jQuery.ajax()এক্সএইচআর অবজেক্টে আমার সমস্যা ছিল । অনুরোধটি এজেএক্স কল-তেও তৈরি করা হয়নি, এখনও f.open পাওয়া কোনও ফাংশন এবং স্থিতি কোড নয় by এর কারণ: আমি $.ajaxSettings.xhrএখান থেকে বস্তুটি $.ajaxSetup({xhr})ফিরিয়ে new window.XMLHttpRequest();
দিচ্ছিলাম

3

আমারও একই সমস্যা ছিল এবং এটি ব্রাউজারের এক্সএসএস (ক্রস সাইট স্ক্রিপ্টিং) ব্লকের সাথে সম্পর্কিত ছিল। আমি এটি একটি সার্ভার ব্যবহার করে কাজ করতে পরিচালিত।

একবার দেখুন: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0


2

"দুর্ঘটনাজনিত" ফর্ম জমা দেওয়া হ'ল আমার ঠিক সমস্যা ছিল। আমি কেবল পুরোপুরিভাবে ফর্ম ট্যাগগুলি সরিয়েছি এবং এটি সমস্যার সমাধান বলে মনে হচ্ছে। আপনি সবাই ধন্যবাদ!


2

আমাদের অনুরূপ সমস্যা ছিল - জ্যাকোরি এজ্যাক্স কল এ স্ট্যাটাস কোড 0 - এবং এটি নির্ণয় করতে আমাদের পুরো দিন লেগেছিল। যেহেতু কেউ এখনও এই কারণটি উল্লেখ করেনি, তাই আমি ভেবেছিলাম শেয়ার করব।

আমাদের ক্ষেত্রে সমস্যাটি ছিল HTTP সার্ভার ক্রাশ। পিএইচপি-তে কিছু বাগ আপাচি ফুঁকছিল, তাই ক্লায়েন্টের শেষে এটি দেখতে এরকম দেখাচ্ছে:

mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com

Connection closed by foreign host.
mirek@toccata:~$ 

যেখানে test.php এ ক্র্যাশিং কোড রয়েছে। সার্ভার থেকে কোনও ডেটা ফিরেনি (শিরোনাম এমনকি নয়) => এজ্যাক্স কলটি স্থিতি 0 সহ বাতিল করা হয়েছিল।


2

আমার ক্ষেত্রে এটি আমার জাঙ্গো সার্ভারের অধীনে চালিত http://127.0.0.1:8000/হয়ে এজ্যাক্স কলটি প্রেরণে হয়েছিল http://localhost:8000/। আপনি তাদের একই ঠিকানায় মানচিত্রের প্রত্যাশা করলেও, তারা এতক্ষণ নিশ্চিত হন না যে আপনি আপনার অনুরোধগুলি লোকাল হোস্টে প্রেরণ করছেন না।


2

আমাদের ক্ষেত্রে, পৃষ্ঠার লিঙ্কটি https থেকে http এ পরিবর্তিত হয়েছিল । ব্যবহারকারীরা লগ ইন করা সত্ত্বেও এজেএক্সের সাহায্যে লোড করা থেকে তাদের বাধা দেওয়া হয়েছিল।


মজাদার. আমি আশা করি এটি আমার ক্ষেত্রে যেহেতু আমার আইফ্রেমেটি https- এর সাথে খোলে এবং ফলাফল সাফল্যের সাথে আমি HTTP এ আজাক্স প্রেরণ করি তারপরে আমি স্থিতি 0
সোনিক

1

আমার ক্ষেত্রে, url: ''এজাক্স সেটিংসে সেটিংস স্থাপনের ফলে আইটি 8-তে একটি স্ট্যাটাস কোড 0 হবে It এটি মনে হয় ঠিক যেমন এই জাতীয় সেটিংস সহ্য করে না।


1

আমার জন্য, সমস্যাটি হোস্টিং সংস্থা (গডাড্ডি) পোষ্ট অপারেশনগুলির চিকিত্সা করার কারণে হয়েছিল যার একরকম সুরক্ষা হুমকির মতো যথেষ্ট প্রতিক্রিয়া ডেটা (দশকিলোবাইটের চেয়ে বেশি কিছু) ছিল। যদি এইগুলির মধ্যে 6 টিরও বেশি এক মিনিটের মধ্যে ঘটে থাকে, তবে হোস্টটি পরের মিনিটের মধ্যে পিওএসটি অনুরোধের প্রতিক্রিয়া জানিয়েছিল এমন পিএইচপি কোড কার্যকর করতে অস্বীকার করেছিল। হোস্ট পরিবর্তে কী করেছে তা আমি পুরোপুরি নিশ্চিত নই, তবে টিসিপিডম্পের সাথে ব্রাউজারের একটি পোষ্ট অনুরোধের প্রতিক্রিয়া হিসাবে টিসিপি রিসেট প্যাকেট আসছি see এটি কোনও jqXHR অবজেক্টে 0 স্থিতির জন্য HTTP স্থিতি কোডটি ডেকে আনে।

অপারেশনগুলি POST থেকে GET এ পরিবর্তন করা সমস্যার সমাধান করে। গডাড্ডি কেন এই সীমাটি চাপিয়ে দিয়েছে তা পরিষ্কার নয়, তবে কোড পরিবর্তন করা হোস্ট পরিবর্তন করার চেয়ে সহজ ছিল।


1

আমি মনে করি এই ত্রুটির কারণ কী হতে পারে তা আমি জানি।

গুগল ক্রোমে গুগল ক্রোম এক্সটেনশনের জন্য ডিডোস আক্রমণ প্রতিরোধ করার জন্য একটি অন্তর্নির্মিত বৈশিষ্ট্য রয়েছে।

যখন এজাক্স অনুরোধগুলি অবিচ্ছিন্নভাবে 500+ স্থিতির ত্রুটিগুলি ফিরিয়ে দেয়, তখন এটি অনুরোধগুলিকে থ্রটল করতে শুরু করে।

সুতরাং নিম্নলিখিত অনুরোধের উপর 0 স্থিতি পাওয়া সম্ভব।


1

বর্ণিত সমস্যার সবচেয়ে দু: খজনক কারণে পুরষ্কার জয়ের প্রয়াসে।

কল করতে ভুলে যাচ্ছি

xmlhttp.send(); //yes, you need this pivotal line!

হ্যাঁ, আমি এখনও 'ওপেন' কল থেকে শূন্যের স্থিতি রিটার্ন পাচ্ছিলাম।


1

আমার ক্ষেত্রে, আমি এটি পেয়েছিলাম তবে কেবল সাফারি মোবাইলে। সমস্যাটি হ'ল আমি আপেক্ষিকটির পরিবর্তে ( যাইহোক.এফপি ) সম্পূর্ণ ইউআরএল ( http://example.comwwove.php ) ব্যবহার করছিলাম । এটি যদিও কোনও অর্থবোধ করে না, এটি কোনও এক্সএসএস সমস্যা হতে পারে না কারণ আমার সাইটটি http://example.com এ হোস্ট করা হয়েছে । আমার ধারণা, সাফারিটি HTTP অংশটির দিকে তাকিয়ে থাকে এবং স্বয়ংক্রিয়ভাবে এটিকে বাকি ইউআরএলটি পরীক্ষা না করেই একটি সুরক্ষিত অনুরোধ হিসাবে পতাকাঙ্কিত করে।


1

আমার সমস্যা সমাধানের সময়, আমি এই AJAX xmlhttpRequest.status == 0 এর অর্থ ক্লায়েন্ট কলটি এখনও সার্ভারে পৌঁছেছে না, তবে ক্লায়েন্ট পক্ষের ইস্যু করার কারণে ব্যর্থ হয়েছে। যদি প্রতিক্রিয়াটি সার্ভার থেকে ছিল, তবে স্থিতিটি অবশ্যই তাদের 1XX / 2xx / 3xx / 4xx / 5xx HTTP রেসপন্স কোড হতে হবে be এখন থেকে, সমস্যা সমাধানের বিষয়টি ক্লায়েন্ট ইস্যুতে ফোকাস করবে এবং এটি ইন্টারনেট নেটওয়ার্ক সংযোগ ডাউন বা উপরের ল্যাংডন দ্বারা বর্ণিত একটি হতে পারে।


0

অনুরোধটি করার সময় ব্রাউজার কনসোলটি পর্যবেক্ষণ করুন, যদি আপনি দেখতে পান যে "একই অরিজিন পলিসি HTTP অ্যাজ্যাক্সে রিমোট রিসোর্সটি পড়তে নিষেধ করেছে ..... কারণ: কর্স শিরোনামটি 'অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্পন্ন' নিখোঁজ 'রয়েছে তবে আপনার প্রয়োজন প্রতিক্রিয়া শিরোনামে "অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স" যোগ করুন। উদাহরণস্বরূপ: জাভাতে আপনি প্রতিক্রিয়া.সেটহিডার ("অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন", "*") এর মতো সেট করতে পারেন যেখানে প্রতিক্রিয়াটি এইচটিটিপি সার্ভেলরেস্পোনস।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.