使用jQuery访问Drupal Json服务

时间:2012-02-09 11:31:06

标签: json drupal jquery

您好

我是 Drupal JSON网络服务 JQuery 的新手。

我有一个JSON Web服务(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);
    }});

但是成功的回调方法没有得到调用。这段代码有什么问题?如何使用jQuery调用user.login方法?

有人可以帮助我吗?,PLZ

由于

2 个答案:

答案 0 :(得分:2)

看到这一点,他们在这里展示了如何在jquery-ajax中使用login.json ..

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

答案 1 :(得分:1)

您的ajax网址应该是这样的:

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

尝试这样的事情:

$('#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;
});