【问题标题】:Accessing Drupal Json service using jQuery使用 jQuery 访问 Drupal Json 服务
【发布时间】:2012-02-09 11:31:05
【问题描述】:

我对 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 方法?

有人可以帮帮我吗?,请

谢谢

【问题讨论】:

    标签: json drupal jquery


    【解决方案1】:

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

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

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然这在理论上可以回答这个问题,it would be preferable 在这里包括答案的基本部分,并提供参考链接。
    • 本教程也尚未更新,以说明现在服务模块 3.4 及更高版本所需的 CSRF 令牌。
    【解决方案2】:

    您的 ajax URL 应该是这样的:

    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;
    });
    

    【讨论】:

    • 这是一个好的开始,但它不处理服务现在需要的 CSRF 令牌,也不显示登录后如何处理请求。
    • 用户登录不需要 CSRF 令牌。只有经过身份验证的用户执行 POST、PUT 或 DELETE 调用时才需要 CSRF 令牌。该问题没有询问登录后如何处理请求。这里有关于如何处理对 CSRF 令牌需求的信息:drupal.org/node/2013781
    • 好问题!!! 我自己也陷入了这堵砖墙。很好的答案。苛刻也有一个很好的链接。多亏了这篇文章,我实际上正在为我的项目完成一个实施而没有太多的痛苦。谢谢,所有人的所有升船,我正在偿还所有贡献者的学分。节省时间> :) 每个回复都提供了丰富的信息,很棒的整体帖子和评论线程,所以你所有值得被爱。
    猜你喜欢
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2011-02-05
    • 2012-08-22
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多