Ajax-вызов внутри атрибута класса - PullRequest
0 голосов
/ 05 июля 2018

Я перевожу скрипт php / js / ajax в wordpress

Я столкнулся с чем-то, чего я никогда раньше не видел, я понимаю, что он делает, но я пытаюсь понять, как заставить это работать для WordPress.

код:

<a id="a" class="tab block sel {content:'cont_1', ajaxContent:'php/templates.php',ajaxData:'type=pistols'}">Pistols</a>
<a id="b" class="tab block {content:'cont_2', ajaxContent:'php/templates.php',ajaxData:'type=rifles'}">Rifles</a>
<a id="c" class="tab block {content:'cont_3', ajaxContent:'php/templates.php',ajaxData:'type=shotguns'}">Shotguns</a>
<a id="d" class="tab block {content:'cont_4', ajaxContent:'php/templates.php',ajaxData:'type=cameras'}" >Cameras</a>
<a id="e" class="tab block {content:'cont_4', ajaxContent:'php/templates.php',ajaxData:'type=audios'}" >Audio</a>

Шаблоны PHP:

if(isset($_POST['type'])) {
    //The div for the manufacturer tabs, uniquely identified by the $_POST['type']
    echo "<ul id=\"".$_POST['type']."\" class=\"shadetabs\" style=\"position:relative; top:-12px; width:905px;\">";
    if ($_POST['type'] === 'pistols') {
        $manufacturers = .. and so on

Из того, что я могу понять, мы вызываем Templates.php и передаем $ _POST ['type']. Когда это завершено, скрипт заменяет содержимое <div id="cont_1"

В WordPress я не могу вызвать случайные файлы PHP, так как AJAX не будет работать. Мне нужно превратить это в функцию и подключить к WordPress.

Кто-нибудь знает, как работает этот тип кода?

В качестве альтернативы я планирую сделать следующее, но я бы предпочел сохранить его аналогичным исходному коду, и для этого потребуется много дополнительных строк кода.

var tab = jQuery("#a").type;
jQuery.ajax({
        url: custom_designer.ajax_url,
        type: 'post',
        data: {
        action: 'php_template_function'
            type: tab
        },
        success: function (response) {
            document.getElementById('caseclub_response').innerHTML = response;
            document.getElementById("buy_case_foam_added").submit();
        }
    });

1 Ответ

0 голосов
/ 05 июля 2018

Кто-нибудь знает, как работает этот тип кода?

Похоже, что есть некоторый JavaScript, который извлекает строку объекта из атрибута класса, затем выбирает HTML-код из template.php и записывает его куда-то.

Например:

function fetchList(element) {
  var settings = element.className.match(/\{.+\}/);
  settings = eval('(' + settings[0] + ')') // eww

  fetch(settings.ajaxContent, {
    method: 'post',
    body: settings.ajaxData
  }).then((response) => {
    // Error handling...
    response.text().then(() => {
      // Now writes the HTML somewhere...
    });
  });
}

Если вы хотите скопировать то, что они сделали, посмотрите, сможете ли вы найти оригинальный код с помощью Инспектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...