কিভাবে jQuery $ .জ্যাক্স ত্রুটি প্রতিক্রিয়া পাঠ্য পেতে?


234

আমি আমার jQuery এ একটি ত্রুটি প্রতিক্রিয়া পাঠাচ্ছি। যাইহোক, আমি প্রতিক্রিয়া পাঠ্যটি পেতে পারি না (নীচের উদাহরণে এটি সৈকতে যাবে )

JQuery কেবলমাত্র যা বলে তা হ'ল 'ত্রুটি'।

বিশদ জন্য এই উদাহরণ দেখুন:

পিএইচপি

<?
    header('HTTP/1.1 500 Internal Server Error');
    print "Gone to the beach"
?>

jQuery এর

$.ajax({
    type:     "post",
    data:     {id: 0},
    cache:    false,
    url:      "doIt.php",
    dataType: "text",
    error: function (request, error) {
        console.log(arguments);
        alert(" Can't do because: " + error);
    },
    success: function () {
        alert(" Done ! ");
    }
});

এখন আমার ফলাফল ist:

লগ ইন করুন:

 [XMLHttpRequest readyState=4 status=500, "error", undefined]

সতর্কতা:

করতে পারি না কারণ: ত্রুটি

কোন ধারনা?


সমস্যাটি আপনার পিএইচপি কোডে রয়েছে বলে মনে হচ্ছে। আপনার শিরোনাম এবং শিরোনামের মধ্যে 2 লাইন ব্রেক দরকার নেই? না headerফাংশন এই হ্যান্ডেল?
rfunduk

থেন্ডুকস: পিএইচপি জানে যে এটি কী করছে। সমস্যাটি হ'ল এইচটিটিপি স্থিতি ফিরে আসার কারণ এটি 500 টি, $.ajax()এতে ত্রুটিযুক্ত ফাংশনটি কল করে।
ক্রিস চরবারুক

উত্তর:


309

চেষ্টা করুন:

error: function(xhr, status, error) {
  var err = eval("(" + xhr.responseText + ")");
  alert(err.Message);
}

127
আমি JSON.parse (xhr.responseText) ব্যবহার করতে পছন্দ করি
ফিল-আর


19
evalএখানে একটি ব্যবহার করে বেশি বোঝা যায় না। আপনি যদি কোনও JSON প্রতিক্রিয়া পার্স করতে চান তবে ব্যবহার করুন JSON.parse। ওপির ক্ষেত্রে, প্রতিক্রিয়াটি এমনকি জাসন বা জাভাস্ক্রিপ্ট নয়, তাই আপনার evalকেবল সিন্ট্যাক্সেরর তৈরি হতে চলেছে।
মার্ক আমেরিকা

1
JSON.parse এর IE8 + প্রয়োজন। ( বিকাশকারী.মোজিলা.অর্গ.ইন- ইউএস / ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স /… )। যদি পুরানো ব্রাউজারগুলির জন্য সমর্থন প্রয়োজন হয় তবে p। পার্সজেএসএন ব্যবহার করুন (jQuery, api.jquery.com/jQuery.parseJSON থেকে )
জুলিয়ান



51

responseTextঅনুরোধ প্যারামিটারের সম্পত্তিটি দেখুন ।


আইই 8 তে আমার 'পার্সেরেরর' সমস্যা আছে তবে ক্রস-অরিজিন জেএসওএনপি অনুরোধের জন্য আইই 7-তে কাজ করছি। কিন্তু রেসপন্সটেক্সট সম্পত্তিটি কোথায়? ডিবাগ করার সময় প্রতিক্রিয়া অবজেক্টটি পরীক্ষা করার সময় আমি এটি কোথাও দেখতে পাচ্ছি না। আমি কেবল রেডিস্টেট, স্ট্যাটাস, স্ট্যাটাসটেক্সট এবং $ .জ্যাক্স () অনুরোধ অবজেক্টের অন্যান্য পদ্ধতিগুলি দেখতে পাচ্ছি।
এনএলভি

এক্সএইচআর অবজেক্টের প্রতিক্রিয়ার মাইম টাইপের উপর নির্ভর করে হয় রেসপন্সটেক্সট বা রেসপন্সএক্সএমএল থাকা উচিত।
tvanfosson

আমি সমস্যাটি খুঁজে পেয়েছি। বাস্তবে jquery একটি JSONP তৈরি করার সময় XHR অবজেক্টটি মোটেই তৈরি করবে না। জেএসএন-প্যাডিং হ'ল ডায়নামিক স্ক্রিপ্টের রেফারেন্সগুলি ইউআরএলকে নির্দেশ করে যুক্ত করা হয় এবং জেসন ডেটা একটি পদ্ধতিতে মোড়ানো হবে যা অনুরোধ জানানো হয়। সুতরাং এক্সএইচআর মোটেও ব্যবহৃত হয় না।
এনএলভি

আইই 8 এবং ক্রস-অরিজিনের সাথে একটি সমস্যা রয়েছে। আজ পুরো দিন ব্যয় করেছেন :(। Stackoverflow.com/questions/8165557/…
এনএলভি

আপনি কীভাবে কোনও জসন অবজেক্টে রেপ্ল্পনসেক্সটেক্সকে পার্স করবেন?
ছয়


7

এটিই আমার পক্ষে কাজ করেছিল

    function showErrorMessage(xhr, status, error) {
        if (xhr.responseText != "") {

            var jsonResponseText = $.parseJSON(xhr.responseText);
            var jsonResponseStatus = '';
            var message = '';
            $.each(jsonResponseText, function(name, val) {
                if (name == "ResponseStatus") {
                    jsonResponseStatus = $.parseJSON(JSON.stringify(val));
                     $.each(jsonResponseStatus, function(name2, val2) {
                         if (name2 == "Message") {
                             message = val2;
                         }
                     });
                }
            });

            alert(message);
        }
    }

2
xhr.responseJSON এছাড়াও উপলব্ধ। সুতরাং আমরা $ .parseJSON (xhr.responseText) এড়াতে পারেন
Prasanth

4

এটি আপনাকে কেবলমাত্র "প্রতিক্রিয়া পাঠ্য" মানটি না দিয়ে পুরো প্রতিক্রিয়াটি দেখতে দেয়

error: function(xhr, status, error) {
    var acc = []
    $.each(xhr, function(index, value) {
        acc.push(index + ': ' + value);
    });
    alert(JSON.stringify(acc));
}

3

আপনি এটি চেষ্টা করতে পারেন:

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError) {
        alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
    });

3

আপনি যদি লাইন নম্বর সহ সিনট্যাক্স ত্রুটি পেতে চান তবে এটি ব্যবহার করুন

error: function(xhr, status, error) {
  alert(error);
}

আমি একটি লাইন নম্বর পাইনি, তবে "সতর্কতা (ত্রুটি)" যখন আমাকে একটি ফাইল পড়ার জন্য $ .get বলে ডাকত তখন আমাকে "খুঁজে পাওয়া যায় না" দিয়েছিল, যা আমার প্রয়োজন ছিল। Xhr.responseText 404 পৃষ্ঠা ফিরিয়েছিল আমাকে বলছে যে ফাইলটি নেই।
জেমস টমি

হাই জেমস, যদি এটি "পাওয়া যায় না" ত্রুটিটি ফেলে দেয় তবে এর অর্থ "উরল" বা "অ্যাকশন" পদ্ধতিটি খুঁজে পেতে অক্ষম।
কার্তিকেইয়ান পি


0

আমি এটি ব্যবহার করেছি এবং এটি পুরোপুরি কার্যকর হয়েছে।

error: function(xhr, status, error){
     alertify.error(JSON.parse(xhr.responseText).error);
}

xhr.responseText ফেরত {ত্রুটি: "ত্রুটি ....."}} তারপরে, পার্স JSON পার্স করার জন্য iam JSON.parse ব্যবহার করুন। ব্যবহার চেষ্টা করুন।
জুয়ান সিলুপা মাজা

আপনি যদি কিছু যুক্ত করতে চান তবে উত্তরটি সম্পাদনা করুন । মন্তব্যগুলি অস্থায়ী এবং প্রশ্ন / উত্তরগুলি আরও স্থায়ী।
এজাদুবি

-1

আপনার যদি কোনও নেটওয়ার্ক ত্রুটি না থেকে থাকে এবং ব্যর্থপৃষ্ঠা থেকে অপ্রতুল সুযোগ সুবিধার্থে কোনও ত্রুটি উপস্থাপন করতে চান, তবে 200 এবং একটি ত্রুটি বার্তা সহ আপনার প্রতিক্রিয়াটি সার্ভার করুন। তারপরে আপনার সাফল্যের হ্যান্ডলারটিতে ডেটা পরীক্ষা করুন st স্ট্যাটাস == 'ত্রুটি'


1
কেন 200 সঙ্গে পৃষ্ঠতল? 200 হ'ল ঠিক আছে। তার একটি কাস্টম বার্তা দিয়ে একটি ত্রুটি স্থিতি ফিরে আসা উচিত।
ডেমেন্টিক

বেশিরভাগ এপিআইএস আমি ব্যবহার করি প্রতিক্রিয়া বডির ভিতরে একটি ত্রুটি কোড সহ 200 টি রিটার্ন দেয়।
chovy

200 ব্যতীত অন্য কিছু ফিরিয়ে দেওয়া সমস্যাযুক্ত হতে পারে যখন আপনি ব্যাকএন্ড থেকে কোনও ত্রুটি কোড বা ত্রুটি বার্তা উপস্থাপন করতে চান। নন-200 সাধারণত নেটওয়ার্ক কারণের কারণে অনুরোধটি নিজেই ব্যর্থ হয়ে যায় তা নির্দেশ করার জন্য ব্যবহৃত হয় ... এমন নয় যে উদাহরণস্বরূপ ব্যবহারকারীর অনুমতি নেই। আমাদের অ্যাপ্লিকেশনটিতে, আমরা আমাদের "মেকাপিক্যাল" প্রতিশ্রুতি ব্যবহার করি যা 200 টি প্রতিক্রিয়াতে ত্রুটি কোডের সন্ধান করে এবং failপদ্ধতির পরিবর্তে পদ্ধতিটিকে অগ্নিসংযোগ করে done। সমস্ত অনুরোধ কোড এবং বার্তা সহ একটি 'স্থিতি' অবজেক্ট রয়েছে এমন একটি বস্তু ফেরত দেয়।
চবি

1
অনুমোদনের জন্য en.wikedia.org/wiki/HTTP_403 । আরো কিছু আকর্ষণীয় পঠিত এখানে stackoverflow.com/questions/7996569/...
Dementic

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