عند استخدام $ .ajax في JQuery، كيف يمكنني رمي خطأ عمدا في المستند المحمل؟

StackOverflow https://stackoverflow.com/questions/2212964

  •  19-09-2019
  •  | 
  •  

سؤال

في وثيقتي لدي هذا البرنامج النصي:

$.ajax({ type:"POST",url:"ajax.php",data:data,
    success: function() { 
        //onsuccess
    },
    error: function() { 
        //onerror
    }
}); 

كيف يمكنني، في المستند ajax.php, ، رمي خطأ عمدا؟ هل يكفي فقط رمي رمز حالة HTTP 400 أو شيء من هذا؟ (وإذا كان الأمر كذلك، فهل 400 صحيح؟)

لماذا أسأل هو أنني أريد استخدام هذا لتقديم نموذج إلى الخادم، وإذا لم يتم ملء الحقل بشكل صحيح، أريد تنبيه المستخدم من خلال معلمة الخطأ في $.ajax. وبعد أعلم أنني أستطيع أن أفعل ذلك باستخدام جافا سكريبت في المقام الأول، لكنني آمل أن أتمكن من القيام بذلك بهذه الطريقة (لذلك ليس لدي لكتابة التحقق مرتين). ولكن بالطبع من خلال القيام بذلك بهذه الطريقة، لا أستطيع فصل المجالات المختلفة من الآخر.

بناء على ما أريد استخدامه، هل يمكنني رمي بطريقة أو بأخرى "خطأ مخصص", ، لذلك إذا كان الحقل name لم يتم ملء بشكل صحيح، فإنه يعيد اسم الحقل (أي name). هل يكفي أن تفعل شيئا مثل هذا:

في ajax.php:

if (isFilledOutProperly($name) == false) {
    echo "name";
}
else {
    echo "success";
}

و:

success: function(data) { 
    if (data == 'name') {
        //error
    }
            else {
        //success
    }
},

قد أكون في المسار الخطأ هنا، ولكن إذا كان لدى شخص ما اقتراحا أفضل حول كيفية القيام بذلك، فالرجاء أن تخبرني. شكرا!

هل كانت مفيدة؟

المحلول

ال error جملة $.ajax() المكالمات ليست حقا في الظروف التي تشير إليها. error يغطي حالات أخطاء HTTP. فشل التحقق من الصحة ليست حقا أخطاء في هذه الحالة. أنت أفضل حالا مما يدل على تلك الموجودة في success رد الاتصال بالبيانات المناسبة التي تم إرجاعها من الخادم.

إذا نظرت إلى توثيق:

error(XMLHttpRequest, textStatus, errorThrown)Function

وظيفة يجب استدعاؤها إذا فشل الطلب. يتم تمرير الوظيفة ثلاث حجج: كائن XMLHTTPRECEEST، سلسلة تصف نوع الخطأ الذي حدث وكائن استثناء اختياري، إذا حدث أحد. القيم المحتملة للحجة الثانية (إلى جانب NULL) هي "مهلة"، "خطأ"، "غير متوفر" و "parsererror". هذا حدث أجاكس.

ملحوظة: شروط الخطأ التي تتحدث عنها هي تحليل الأخطاء والمنتجات المهلة والأخطاء (HTTP) وعدم تعديلها (وهو استجابة HTTP الأخرى).

من الناحية الفنية تنجح طلبك ولكن فشل التحقق من الصحة، وهو أمر ليس خطأ في حد ذاته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top