2012-02-09 61 views
2

访问使用jQuery

Drupal的Json的服务,我很新的Drupal的JSON Web服务JQuery的

我有一个JSON的Web服务(http://www.myweb.com/services/json),并具有方法称为 user.login

user.login方法需要2个参数,用户名和密码。

我试着用卷曲的表彰

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

看到这,在这里,他们已经展示了如何在jQuery的AJAX使用login.json ..

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

+1

欢迎来到Stack Overflow!虽然这可能会在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 – 2012-03-21 18:51:58

+2

本教程还未更新,以说明服务模块3.4及更高版本现在需要的CSRF令牌。 – RevNoah 2013-07-30 20:54:24

1

你的AJAX 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 2013-07-31 17:04:26

+2

用户登录不需要CSRF令牌。只有通过POST,PUT或DELETE调用的经过身份验证的用户才需要CSRF令牌。问题没有要求登录后如何处理请求。有关于如何处理CSRF令牌需求的信息,请访问:https://drupal.org/node/2013781 – 2013-08-01 17:11:46

+0

很好的问题! *我自己进入了这个砖墙*。很好的答案。哈斯也有很好的联系。 由于这篇文章,我实际上正在为我的项目拉动一个实现,没有太多的痛苦。谢谢你们,所有人都可以上船,我会为所有的贡献付款。节省时间> :)每个回复都是信息丰富的,整体帖子和评论线程很棒,所以你***所有***值得爱。 – stefgosselin 2013-12-12 00:41:10