• Как отправить массив из JS в PHP?

    @DanKud
    Если это весь код, то переменная strchecked у вас объявлена внутри колбэк-функции и в глобальном пространстве ее нет. По-этому AJAXом она отправляется пустой. Если не весь и переменная объявлена в глобальном пространстве, то проверьте, что у вас приходит в var_dump($_POST['strchecked'])
  • Как сгруппировать ключи в массиве и перебрать их?

    @DanKud
    Для начала хотелось бы узнать откуда у вас взялся метод ->find()
  • Как распечатать результат JS на странице?

    @DanKud
    В данном случае у вас получается логически неправильно выстроенное приложение. Никто так не делает. И у вас ничего толкового из этого не получится. Конвертировать нужно в PHP. И чем вас не устраивает встроенная функция преобразования XML в объект PHP? Она конечно в некоторых местах насколько я знаю не совсем корректно работает, но в вашем случае этого должно быть достаточно:

    $xmlStr = '<?xml version="1.0" encoding="UTF-8" ?>
    <Results>
    <show>
    <showid>2930</showid>
    <name>Buffy the Vampire Slayer</name>
    <link>http://www.tvrage.com/Buffy_The_Vampire_Slayer</link>
    <country>US</country>
    <started>Mar/10/1997</started>
    <ended>May/20/2003</ended>
    <seasons>7</seasons>
    <status>Ended</status>
    <runtime>60</runtime>
    <classification>Scripted</classification>
    <genres><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Mystery</genre><genre>Sci-Fi</genre></genres>
    <network country="US">UPN</network>
    <airtime>20:00</airtime>
    <airday>Tuesday</airday>
    <akas><aka country="SE">Buffy &amp; vampyrerna</aka><aka country="DE">Buffy - Im Bann der Dämonen</aka><aka country="NO">Buffy - Vampyrenes skrekk</aka><aka country="HU">Buffy a vámpírok réme</aka><aka country="FR">Buffy Contre les Vampires</aka><aka country="IT">Buffy l\'Ammazza Vampiri</aka><aka country="PL">Buffy postrach wampirów</aka><aka country="BR">Buffy, a Caça-Vampiros</aka><aka country="PT">Buffy, a Caçadora de Vampiros</aka><aka country="ES">Buffy, Cazavampiros</aka><aka country="HR">Buffy, ubojica vampira</aka><aka country="FI">Buffy, vampyyrintappaja</aka><aka country="EE">Vampiiritapja Buffy</aka><aka country="IS">Vampírubaninn Buffy</aka><aka country="RU">Баффи – истребительница вампиров</aka></akas>
    </show>
    <show>
    <showid>31192</showid>
    <name>Buffy the Vampire Slayer - Season Eight: Motion comics</name>
    <link>http://www.tvrage.com/shows/id-31192</link>
    <country>US</country>
    <started>Jul/19/2010</started>
    <ended>Nov/22/2010</ended>
    <seasons>1</seasons>
    <status>Canceled/Ended</status>
    <runtime>15</runtime>
    <classification>Animation</classification>
    <genres><genre>Animation General</genre><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Sci-Fi</genre></genres>
    <network country="US">iTunes</network>
    <airtime>12:00</airtime>
    <airday>Tuesday</airday>
    </show>
    <show>
    <showid>2931</showid>
    <name>Buffy the Animated Series</name>
    <link>http://www.tvrage.com/Buffy_the_Animated_Series</link>
    <country>US</country>
    <started>2002</started>
    <ended></ended>
    <seasons>1</seasons>
    <status>Pilot Rejected</status>
    <runtime>4</runtime>
    <classification>Animation</classification>
    <genres><genre>Animation General</genre><genre>Action</genre><genre>Adventure</genre><genre>Horror/Supernatural</genre></genres>
    <network country="US">FOX</network>
    <airtime>12:00</airtime>
    <airday>Tuesday</airday>
    </show>
    </Results>';
    
    $xmlObj = simplexml_load_string($xmlStr);
    $json = json_encode($xmlObj); /* json-строка */
    $arrData = json_decode($json, true); /* данные в виде массива */
    
    print_r($arrData);
  • Как распечатать результат JS на странице?

    @DanKud
    Как я получу результат из index.html, если в нем нет реальной строки JSON?

    Никак вы ее не получите таким способом. CURL не выполняет скрипты на странице, по-этому вы и получаете только пустые HTML-тэги при таком запросе. Вам вообще не нужно использовать JavaScript по идее. Для чего? Или вы его решили юзать только потому что нашли готовую функцию конвертации XML to JSON? Так найдите такую же функцию под PHP и не мучайтесь.
  • Как распечатать результат JS на странице?

    @DanKud
    выводит строку но не в код )

    А чем будет строка, которая вам отображается на экрана, отличаться от той, которая будет в исходном коде страницы? Зачем вы вообще вцепились в этот исходный код? Забудьте про него. Чтобы передать данные из JavaScript в PHP нужно использовать AJAX-запросы. Но конкретно в вашем случае возникает вопрос - а логично ли вообще, что вы конвертируете XML to JSON именно в JavaScript? Не проще ли делать это сразу в PHP и обрабатывать все данные там же? Пример AJAX-запроса к PHP-скрипту:

    var xhr = new XMLHttpRequest();
    var params = 'json=' + JSON.stringify(obj);
    xhr.open("POST", 'ваш_PHP_скрипт.php');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onreadystatechange = function() {
        if (this.readyState == 4) {
            document.getElementsByTagName('body')[0].innerHTML = xhr.responseText; /* отобразит полученный результат в body */
        }
    }
    xhr.send(params);

    ваш_PHP_скрипт.php
    <?php
        $json = json_decode($_POST['json'], true);
        print_r($json);
    ?>
  • Как отыскать __callStatic() метод?

    @DanKud
    А почему вы решили, что ->testMethod() вообще что-то должен обрабатывать? Возможно просто что-то тестировали в коде и забыл убрать строки. В данном случае, если метод в классе нигде не объявлен, то он будет выдавать пустой результат __callStatic()
  • Как распечатать результат JS на странице?

    @DanKud
    я привык видеть результат реально в коде страницы (JSON строка), а здесь его нет.
    Вот я и не понял пока, как с этим работать :(

    Вы и не увидите его в исходном коде страницы, потому что исходный код (кстати он ведь не зря так и называется ИСХОДНЫЙ) формируется при загрузки страницы из того, что вы передаете в вывод от сервера, а JSON в вашем случае добавляется на страницу скриптом динамически уже после ее формирования. Но для чего вам нужна JSON-строка именно в исходном коде? Вы можете посмотреть динамически добавленный код через панель разработчика, просто нажмите правой кнопкой на элементе и выберите "Исследовать элемент". А если вы имеете ввиду, что вам нужна чистая строка JSON без переносов, то уберите третий аргумент в методе:

    .....
    document.getElementById('pre').innerHTML=JSON.stringify(obj);
  • Возможно ли остановить цикл на сервере за счет каких-либо действий пользователя на странице (например, отправки формы)?

    @DanKud
    у меня через API php получает информацию с другого сервиса и пишет в файл. Дело в том, что это может занять ооочень много времени. Больше часа.

    Для подобных задач нужно использовать не PHP, а асинхронные языки. Например Node.js
  • Не добавляет пользователя в бд?

    @DanKud
    У вас двойное двоеточие в плейсхолдере ->prepare(... :name: ...)
  • Как обратиться к главной форме и передать ей данные с другого input?

    @DanKud
    Ну так отправляйте AJAX-запрос на search.php с параметром s. Для AJAX-запроса вам НЕ НУЖНА страница где расположена форма. Форма нужна только для РУЧНОГО ввода данных:

    $.ajax({
        url : 'search.php',
        type: 'GET',
        data: {
           s: значение_параметра_s
        },
        success: function(result) {
            console.log(result);
        }
    });
  • Как обратиться к главной форме и передать ей данные с другого input?

    @DanKud
    Вам вообще не нужно обращаться к searchform.php из index.php. Вам нужно сразу же отсылать запрос на /wp-admin/admin-ajax.php с нужными данными:

    $.ajax({
        url : '/wp-admin/admin-ajax.php',
        type: 'POST',
        data: {
            /* параметры, которые вам нужно отправить на /wp-admin/admin-ajax.php */
        },
        success: function(result) {
            console.log(result);
        }
    });
  • SyntaxError: Unexpected Token, - как решить?

    @DanKud
    Возможно проблема с версий Node.js и стоит либо старая, либо нестабильная версия. Установите NVM и попробуйте откатить или обновить версию.
  • Как обратиться к главной форме и передать ей данные с другого input?

    @DanKud
    А зачем вам вообще вызывать страницу с формой? Надо слать AJAX-запрос сразу же на страницу где обрабатываются данные формы. На home_url()

    $.ajax({
        type: 'GET',
        url: <?php echo home_url(); ?>,
        data: {
            s: $('#search').val()
        },
        success: function(data) {
            $('body').html(data);
            /* либо создаете здесь еще один AJAX-запрос на страницу admin-ajax.php
            и передаете нужные данные */
        }
    });

    Та ошибка, которую вам показывает консоль, не имеет к AJAX никакого отношения. Вам показывает, что вы пытаетесь вызвать свойство length у переменной, которая не является объектом и такого свойства не имеет.
  • Как получить JSON-массив с кодом статуса после запроса к БД?

    @DanKud
    Для тестирования кусков кода конечно вопросов нет, если вы будете использовать вывод ошибок. Но если вы уже в конечном результате хотите вывести JSON, то больше никакого вывода, кроме него, быть не должно. На счет $_GET я не имел ввиду, что надо использовать, что-то другое, просто когда вы принимаете данные в $_GET или $_POST и вам нужно эти данные либо добавить в базу, либо вывести на экран, нужно обязательно их фильтровать, чтобы не было уязвимостей. Этот момент нужно запоминать и не забывать про него с самых первых шагов в веб-программировании :)
    Да и даже в вашем случае нужно отфильтровать значение просто для того, что в базу вместо количества товара не записалась просто какая-нибудь левая строка и скрипт в дальнейшем не выдавал ошибку при обработке этой записи.
    А если хотите почитать для чего делать фильтрацию от уязвимостей, то можете погуглите SQL Injection и XSS.
  • Как сгенерировать относительный путь от одного файла к другому?

    @DanKud
    А что если просто не заморачиваться со сравнением названий каталогов и прописывать относительный путь полностью:

    function preparePath($to_path, $from_path): string
    {
    	$from_path = explode('/', $from_path);
    	for ($i = 0; $i < (count($from_path) - 1); $i++) {
    		$str .= '../';
    	}
    	$path = $str . $to_path;
    	return $path;
    }
    
    echo preparePath('55/46/21/11/to.txt', '55/46/54/18/from.txt'); /* ../../../../55/46/21/11/to.txt */
    echo preparePath('55/to.txt', '55/46/54/18/from.txt'); /* ../../../../55/to.txt */
    echo preparePath('55/46/21/11/to.txt', '55/from.txt'); /* ../55/46/21/11/to.txt */
  • Присвоить значение через аргумент?

    @DanKud
    name1e55, потому что это объект. В случае объекта вы передаете аргументом внутрь функции ссылку на этот объект - https://learn.javascript.ru/object-reference. В случае же со всеми другими типами данных, отличных от объекта, вы передаете просто значение, которое присваивается указанному аргументу.
  • Присвоить значение через аргумент?

    @DanKud
    Потому что это так не работает. Аргументом вы просто передали данные внутрь функции, а дальше к переменной text функция отношения не имеет, пока вы не присвоите уже измененное функцией значение к этой переменной.
  • Как переписать file_get_contents на (через) cURL?

    @DanKud
    А в чем проблема то? Вы написали вполне рабочий код.
  • Почему не работает return?

    @DanKud
    О чем вообще все эти комментарии? Вам же сразу написали, что вы ничего не выводите на экран. Вы присваиваете переменной значение выполнения функции, но никуда ее не выводите:

    .....
    $txt = menu();
    echo $txt;
    break;
    .....

    Если вы все-таки где-то потом ее выводите и ничего не выводиться, значит проблема в конструкции switch
  • Как сделать отложенный запуск ссылки?

    @DanKud
    Немного поправил код, чтобы он корректно работал в Internet Explorer.