Службы Drupal Доступ к XML-RPC из javascript

Я пытаюсь получить доступ к XML-RPC моей локальной установки drupal из javascript. Вот код:

$.ajax({
            type: "POST",
    url: "http://www.sms2.com/services/xmlrpc",
    dataType: "xml",
    data: {"method": "node.get",
                "nid": 1
            },
    success: function(msg) {
        //alert("data: " + msg.type );  
                    console.log("amrit");
    }
});

Мой индексный файл drupal находится в /home/dark/web_root/sms2/index.php, а файл HTML — в /home/dark/web_root/sms2/test.html.

'sms2' устанавливается из файла /etc/hosts.

Вот ответ, который я получаю:

введите здесь описание изображения

Кто-нибудь может сказать мне, что происходит? Перепробовал почти все возможные варианты, но бесполезно..

Вкладка POST: введите здесь описание изображения

Он отлично работает с экрана администратора XML-RPC! введите здесь описание изображения

Спасибо


person Amrit Bera    schedule 04.05.2011    source источник
comment
Покажите нам также вкладку Post — какие данные вы отправляете? Из faultString я предполагаю, что данные пришли в формате, который XML-RPC не различает... Можете ли вы также предоставить код из процедуры XML-RPC, где видна загрузка данных POST?   -  person shadyyx    schedule 04.05.2011
comment
Хорошо, проблема с методом .post() в том, что он делает именно то, что он называется - отправляет данные по заданному URL... Это означает, что по заданному URL должен быть скрипт, который слушает данные POST, захватывает $_POST['method'] и $_POST['nid'] и делает что-то вроде этого: $method = $_POST['method']; $nid = $_POST['nid']; return $method($nid); или echo $method($nid);. Как выглядит скрипт здесь sms2.com/services/xmlrpc???   -  person shadyyx    schedule 04.05.2011
comment
мммм... понятия не имею :( Он поставляется с модулем drupal (drupal.org/project/services) Я ссылаюсь на приведенный выше код с groups.drupal.org/node/78093.   -  person Amrit Bera    schedule 04.05.2011
comment
Хм, если это XML-RPC, ориентированный на Drupal, возможно, тогда лучше сначала попробовать форумы Drupal... То, что я нашел, это вызов его из PHP, поэтому вы можете вызвать свой собственный PHP-скрипт с вашим вызовом AJAX, который затем вызовет XML-RPC. Вот ссылка: drupal.org/node/836116   -  person shadyyx    schedule 04.05.2011


Ответы (1)


Как показано на снимке экрана вкладки POST, вы отправляете данные не в формате, ожидаемом для вызова XML-RPC. Поэтому, когда обработчик XML-RPC службы пытается прочитать ваши данные, он завершается с ошибкой.

Эта же ошибка обсуждается на странице http://groups.drupal.org/node/6823#comment-478604 с возможным решением.

Если вы создаете только клиент JavaScript, вам не нужно использовать серверную часть XML-RPC для служб. Services 3.x (бета-версия) предоставляет серверную часть REST, поддерживающую как XML, так и JSON. Для более ранних выпусков один из JSON, JSON-RPC и REST должны быть легче работать.

Конечно, вы также можете использовать библиотеку XML-RPC JavaScript (совместимо с jQuery).

person Pierre Buyle    schedule 05.05.2011
comment
Спасибо. Его материал XML-RPC при работе с ссылкой. Но я хочу использовать JSON-RPC и реализовать междоменные вызовы. Можете ли вы помочь мне с этим? ссылка имеет JSON, но не использует метод POST... - person Amrit Bera; 06.05.2011