#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', })