2012-02-09 3 views
2

Привет,Доступ службы Drupal Json с помощью JQuery

Я новичок в веб-сервиса Drupal JSON и JQuery.

У меня есть JSON Web Service (http://www.myweb.com/services/json) и который имеет метод, называемый user.login.

Метод user.login принимает 2 параметра, имя пользователя и пароль.

Я пытался получить доступ к методу с использованием CURL воздаем

curl --data method="user.login" --data username="uname" password="DE" 
     http://www.myweb.com/services/json 

Он отлично работает.

Теперь я хочу получить доступ к этому методу с помощью jQuery.

Я попытался с помощью JQuery методы Ajax,

$.post("http://www.myweb.com/services/json", 
     'method=user.login&username=uname&password=de', 
     function(data){ 
     alert(data); 
    }); 

и

$.ajax({ 
    url: "http://www.myweb.com/services/json", 
    type: 'POST', 
    data:'method=user.login&username=uname&password=de', 
    contentType: 'application/json', 
    success: function(data,textStatus, jqXHR){ 
     alert(data + " " + textStatus + " " +jqXHR); 
    }}); 

Но успех метода обратного вызова не получает вызов. В чем проблема с этим кодом? и как я могу вызвать метод user.login с помощью jQuery?

Может кто-нибудь мне помочь?, Плз

Благодарности

ответ

2

Смотрите это, здесь они показали, как использовать login.json в JQuery-АЯКС ..

http://tylerfrankenstein.com/code/android-app-with-drupal-7-services-phonegap-and-jquery-mobile

+1

Добро пожаловать в переполнение стека! Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/q/8259) включить основные части ответа здесь и предоставить ссылку для справки. –

+2

Этот учебник также не был обновлен для учета токенов CSRF, которые требуются модулю Services 3.4 и выше. – RevNoah

1

Ваш Аякса URL должен выглядеть примерно так:

http://www.myweb.com/my_services_path/user/login.json 

Tr y что-то вроде этого:

$('#page_login_submit').live('click',function(){ 

    // grab form input 
    var name = $('#page_login_name').val(); 
    if (!name) { alert('Please enter your user name.'); return false; } 
    var pass = $('#page_login_pass').val(); 
    if (!pass) { alert('Please enter your password.'); return false; } 

    // make the services call 
    var data_string = 'username=' + encodeURIComponent(name); 
    data_string += '&password=' + encodeURIComponent(pass); 
    $.ajax({ 
     url: "http://example.com/?q=my_services_path/user/login.json", 
     type: 'post', 
     data: data_string, 
     dataType: 'json', 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert('page_login_submit - failed to login'); 
     console.log(JSON.stringify(XMLHttpRequest)); 
     console.log(JSON.stringify(textStatus)); 
     console.log(JSON.stringify(errorThrown)); 
     }, 
     success: function (data) { 
     alert('You are now logged in!'); 
     } 
    }); 
    return false; 
}); 
+1

Это хороший старт, но он не обрабатывает токены CSRF, требуемые службами, и не показывает, как обрабатывать запросы после входа в систему. – RevNoah

+2

Значок CSRF не требуется для входа пользователя. Тонеры CSRF необходимы только для аутентифицированных пользователей, которые выполняют вызовы POST, PUT или DELETE. Вопрос не спрашивал, как обрабатывать запросы после входа в систему. Существует информация о том, как справиться с необходимостью токена CSRF здесь: https://drupal.org/node/2013781 –

+0

Большой вопрос !!! * Я сам был в этой кирпичной стене *. Отличные ответы. У Харша есть хорошая ссылка. Я на самом деле занимаюсь реализацией моего проекта, не испытывая слишком большой боли благодаря этому сообщению. Спасибо, все лодки для всех, я выплачиваю кредиты всем вкладкам. за сохраненное время> :) Каждый ответ является информативным, отличным общим сообщением и комментариями, поэтому вы *** все *** заслуживаете любви. – stefgosselin

Смежные вопросы