Обнаружение успешного ответа от функции ajax

#ajax #wordpress

Вопрос:

У меня есть функция, которая запускается через AJAX и при успешном выполнении выполнит следующее:

wp_send_json_success();

Затем я веду консольный журнал ответа и пытаюсь определить, соответствует ли успех = истине:

 .done(function (response) {  if( response['success'] == true ) {   console.log('add to cart successful');  } else {    console.log('add to cart failed');  }  

В настоящее время я получаю сообщение «добавить в корзину не удалось», несмотря на то, что вывод ответа выглядит так, как будто он должен быть успешным:

 console.log(response);  

// Ответ в консоли браузера:

 {"success":true}  

Я неправильно определяю true ответ?

Обновление — функция PHP, запускаемая AJAX. Удалена большая часть кода просто в качестве теста.

 function fbpixel_add_to_cart_event_conversion_api() {   echo 'hello world';   wp_send_json_success();   die();  } add_action('wp_ajax_fbpixel_add_to_cart_event_conversion_api', __NAMESPACE__.'\fbpixel_add_to_cart_event_conversion_api'); add_action('wp_ajax_nopriv_fbpixel_add_to_cart_event_conversion_api', __NAMESPACE__.'\fbpixel_add_to_cart_event_conversion_api');  
 $.ajax({  url: MyAjax.ajaxurl,  type: 'POST',  dataType: 'json',  data: {  action: 'fbpixel_add_to_cart_event_conversion_api',  product_id: productId,  variation_id: variationId,  },  })  .done(function (response) {   console.log(response);  console.log(productId);  console.log(variationId);  console.log(response.success);   if( response.success === true ) {  

Комментарии:

1. {"success":true,"data":["hello world"]}

2. А, понял! Мне тоже следовало вставить весь код, извините. Посмотрите обновленное сообщение и проверьте dataType под $.ajax, это было html , я переключился на json и работает нормально. Большое спасибо за поддержку 🙂

3. Отлично! Так if( response.success === true ) сработало?

4. Да, это прекрасно работает.

Ответ №1:

Я всегда dot notations проверяю полученный ответ wp_send_json_success , и он всегда работает. Так что используйте его вот так:

 if( response.success === true ) {   console.log('add to cart successful');  } else {    console.log('add to cart failed');  }  

Попробуйте и дайте мне знать, смогли ли вы заставить его работать!

Ответ №2:

Я должен был вставить весь код, извините. У меня был неправильный dataType набор в пределах $.ajax:

До

 $.ajax({  url: MyAjax.ajaxurl,  type: 'POST',  dataType: 'html',  })  

После

 $.ajax({  url: MyAjax.ajaxurl,  type: 'POST',  dataType: 'json',  })