Solspace Rating голосует вверх/вниз, используя AJAX

Я пытаюсь использовать AJAX для оптимизации рейтинга рейтинга рейтинга Solspace, поэтому код успеха или ошибки из тега {exp: rating: insert_rating_vote} .

В моем шаблоне {рейтинг: записи} у меня есть этот код для ссылок вниз:

{exp:rating:rating_vote_stats rating_id="{rating_id}"}
{if not_already_voted}Was this review helpful?Yes  |  No{/if}
{if already_voted}Was this review helpful?Thanks for your vote{/if}
{if total > 0}{up_votes}/{total} people liked this review{/if}
{/exp:rating:rating_vote_stats}  

И шаблон/vendor/rating-vote, на которые ссылаются эти ссылки, содержит следующее:

{exp:rating:insert_rating_vote
    rating_id="{segment_3}"
    allow_duplicates="no"
    duplicate_check_guest_ip="no" 
}
{if failure}Error!{/if}{if success}Thanks for your vote{/if}
{/exp:rating:insert_rating_vote}

Эта настройка работает так, как ожидалось. Когда я нажимаю ссылку, я перехожу к этому простому шаблону, который возвращает сообщение об ошибке или успешном завершении, и голосование вверх/вниз записывается и отображается в моей статистике. Я вижу:

Спасибо за ваш голос

Когда я пытаюсь загрузить шаблон с помощью AJAX, он работает не так, как ожидалось.

Я использую этот код JS:

$(".voters .yes, .voters .no") .click (function() {
    var link = $(this).attr("href")
    var $helpful = $(this).closest(".helpful");
    $helpful.find(".ajax-response").load(link, function() {
        $helpful.find(".voters").hide();
    });
    return false;
});

Это работает, за исключением того, что содержимое, загруженное в мой диапазон, не совпадает с предыдущим. Это то, что я получаю в своем шаблоне, где я ожидал бы простого сообщения о успехе:

{"success": true, "failure": false, "message": "Ваш вход   оценили "" already_reviewed. "ложь" not_already_reviewed ": правда," prior_review_count ": 0," счетчик ": 1} </р>

Любые советы о том, как это сделать?

4

2 ответы

Пытаться:

$helpful.find(".ajax-response").load(link, function(response, status, xhr) {
    $helpful.find(".voters").hide();
    $helpful.find(".ajax-response").html(response.message);
});

Представления Ajax возвращают массив JSON в качестве ответа. Вам нужен правильный ключ (в данном случае .message) в этом массиве для отображения только текста.

Another method for general-purpose ajax submissions can be found here: http://support.solspace.com/solution/categories/115922/folders/190597/articles/119581-simple-jquery-ajax-script

1
добавлено
Я реализовал это, но я все еще вижу ответ JSON ;-(
добавлено автор David A Gibson, источник
Я все еще не могу заставить это работать даже с вышеуказанным изменением. Не могли бы вы еще раз взглянуть на это?
добавлено автор David A Gibson, источник
Вы пытались использовать console.log (ответ) с вышеупомянутым решением (в рамках функции (response) {...} , конечно)? Это может потребоваться переписать. load() не может быть лучшей функцией для обработки ответа.
добавлено автор dubek, источник
Я бы предложил вместо этого попробовать метод .ajax (), предложенный в ссылке этого решения. Отрегулируйте по мере необходимости на основе вашей собственной ситуации.
добавлено автор dubek, источник
@Solspace - ссылка, которую вы указали в своем ответе, больше недоступна - у вас есть идея, куда она переместилась?
добавлено автор J.R., источник

У меня был успех с измененной версией общего кода ajax, связанного с Solspace:

$(".voters .yes, .voters .no") .click (function(e) {
        e.preventDefault();
        var link = $(this).attr("href")
        var $helpful = $(this).closest(".helpful");
        $.ajax({
            url: link,
            success: function(results){  
                    $helpful.find(".voters").hide();
                    $helpful.find(".ajax-response").html("Thanks for your vote");
                },
            error: function(results){
                    $helpful.find(".ajax-response").html("Error - vote not counted");
            }
        });
    });

Тем не менее, в моих шаблонах {exp: rating_rating_vote} у меня есть сообщения об успехах и неудачах:

{exp:rating:insert_rating_vote
    rating_id="{segment_3}"
    allow_duplicates="no"
    duplicate_check_guest_ip="no" 
}
{if failure}Error!{/if}{if success}Thanks for your vote{/if}
{/exp:rating:insert_rating_vote}

Но с этим методом ajax мои сообщения, куда не отправляются (я видел ответ по умолчанию), даже при использовании results или results.message в качестве вывода HTML. Поэтому я закончил жесткую кодировку ответа в JS - не идеален, но в моем случае работает нормально.

0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском