2012-02-09 86 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