2012-02-16 74 views
0

我有這段代碼。用jQuery訪問Restful web服務時用戶名和密碼不正確

var txt =「username = admin & password = admin」;

var jsonText = JSON.stringify({username:'test', password:'test'}); 
    $.ajax({ 
     url : 'http://localhost/testService/loadpayments/', 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     data:jsonText, 
     dataType: "json", 
     processdata:false, 
     error : function(result) { 
      $('#items').html(result); 
     }, 
     success : function(model) { 
      $("#items").html(model); 
     } 
     }); 

現在,當我在Firefox上運行它,並在控制檯上看着它,它說,不正確的用戶名和密碼,但我正確提供兩種。此外當我嘗試粘貼的用戶名和密碼(都正確提供)的網址,它運行並優雅地返回。我做對了嗎?我對這類東西比較陌生。謝謝。

+0

看起來你正在將用戶名和密碼硬編碼爲'test'。你需要一個變量來傳遞參數。 – 2012-02-16 04:13:07

+0

我正在使用JSON.stringify。但每當我在瀏覽器上這樣做。 http:// localhost/testService/loadpayments/username = test&password =測試它的工作原理。你能以某種方式給我一張我在哪裏做錯的照片嗎?謝謝 – jongbanaag 2012-02-16 04:16:34

回答

2

最好我可以告訴你的代碼片段,你的RESTful服務期望你提供用戶名和密碼作爲查詢字符串參數。如果是這樣的話,那麼你的請求的URL看起來應該是這樣:

http://localhost/testService/loadpayments/?username=test&password=test 

但是,你的代碼生成請求URL是:

http://localhost/testService/loadpayments/?{%22username%22:%22test%22,%22password%22:%22test%22} 

沒有必要字符串化的參數。相反,將對象字面值傳遞給AJAX調用的數據參數,並將processData設置爲true(或者完全不指定,因爲它默認爲true),以便將該對象轉換爲查詢字符串參數:

var credentials = {username: 'test', password: 'test'}; 
$.ajax({ 
    url : 'http://localhost/testService/loadpayments/', 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    data: credentials, 
    dataType: "json", 
    processData: true, // defaults to true 
    error : function(result) { 
     $('#items').html(result); 
    }, 
    success : function(model) { 
     $("#items").html(model); 
    } 
    }); 
+0

謝謝。它的工作意味着沒有更多不正確的信用。我只想顯示和訪問該服務是否可以幫助我使用代碼段或代碼?再次感謝你.. :) – jongbanaag 2012-02-16 04:59:22

+0

在你的成功回調,嘗試:$('#items')。html(model.responseText) – RoccoC5 2012-02-16 05:04:11

+1

對,我其實複製了代碼。做了什麼關於成功回調,但在控制檯中它返回「NetworkError:401無效的用戶名或密碼! - http:// localhost/testService/loadpayments /?用戶名=測試和密碼=測試」 – jongbanaag 2012-02-16 05:12:41

0

您正在使用

var jsonText = JSON.stringify({username:'test', password:'test'}); 

相反,你需要使用是否對字符串化創建一個對象。像下面這樣在JavaScript中創建名爲用戶對象:

var user = new Object(); 
user.username = "test"; 
user.password = "test"; 

var jsonText = JSON.stringify(user); 

也許這個例子會更好地解釋

var contact = new Object(); 
contact.firstname = "Jesper"; 
contact.surname = "Aaberg"; 
contact.phone = ["555-0100", "555-0120"]; 

var jsonText = JSON.stringify(contact); 

/* The value of jsonText is: 
'{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}' 
*/ 

這是未經測試,但應該工作。

編輯

我站在對象的想法糾正,在查詢字符串的PARAMS與RoccoC5同意是要走的路。

+0

嗨託德,'JSON.stringify'將與對象字面值一樣工作,例如'{username:'test',password:'test'}',因爲它會與使用'new Object()'構造器創建的對象因爲每個結果都是一樣的。 – RoccoC5 2012-02-16 04:36:45

相關問題