سؤال

أحاول تقديم طلب حذف باستخدام طريقة jQuery Ajax على النحو التالي

$.ajax(
{
  type: 'DELETE',
  url: '/tagz',
  data: {id: taskId},
  success: function(data)
  {
    console.log(data);
  }
});

وعندما أرى وحدة التحكم في Chrome ، أجد في رؤوس الطلب أن طلب الحصول على طلب بدلاً من الحذف. وفي وحدة التحكم Firefox أرى ما يلي.

23:50:52:658: Network: DELETE http://test.goje87.com/tagz [HTTP/1.1 301 Moved Permanently 947ms]
23:50:53:614: Network: GET http://test.goje87.com/tagz/ [HTTP/1.1 200 OK 400ms]

على جانب الخادم أنا ببساطة الحفاظ على الرمز التالي.

$reqMethod = $_SERVER['REQUEST_METHOD'];

switch($reqMethod)
{
  case 'GET':
    Utils::printR('Will provide the resource.');
    selectObjects();
    break;
  case 'POST':
    Utils::printR('Will create a new record.');
    createObject();
    break;
  case 'PUT':
    Utils::printR('Will update the record.');
    break;
  case 'DELETE':
    Utils::printR('Will delete the record.');
    Utils::output($_SERVER);
    break;
}

لا أرى الطلب يدخل في case 'DELETE'. إنه يدخل في case 'GET' في حين أن.

فيما يلي ملف .htaccess الذي أستخدمه في الخادم لغرض عناوين URL النظيفة.

RewriteEngine on
RewriteRule ^(.*)$ index.php [L,QSA]

الرجاء مساعدتي في تقديم طلبات الحذف. شكرًا!

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

المحلول

حصلت عليه. قون

كانت المشكلة مع عنوان URL ('/tagz') أنني كنت أمر $.ajax. عندما غيرتها إلى /tagz/ (أضافت مائلة أخرى إلى الأمام في النهاية) بدأت تعمل بشكل جيد في Chrome و Firefox.

شكرا يا رفاق.

نصائح أخرى

من الواضح أن طريقة الحذف غير مدعومة من قبل متصفح Chrome.

يبدو أن خادم الويب لا يسمح بحذف طريقة. لماذا لا تستخدم طريقة POST فقط لجميع طلباتك وتزويدها بدلاً من ذلك "إجراء" متغير سيحتوي على الإجراء المراد تنفيذه؟

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