2017-05-03 11 views
0

私はRESTサービスを作成しました。これはログインが真であれば文字列 "hej"を返します。 私はJavaでレストクライアントでテストしましたが、うまくいきましたが、javascriptにはかなり新しく、いくつかの助けが必要です。私はこの機能JavascriptとRESTを使用したログイン

function UserAction() { 
console.log(User()); 
var xhttp = new XMLHttpRequest(); 
xhttp.open("GET", "http://localhost:8080/Footballmanagerrestservice/webresources/login"); 
    xhttp.setRequestHeader("login", User()); 
    xhttp.responseType = 'text'; 

xhttp.onreadystatechange = function() { 
    console.log('DONE', xhttp.readyState); 
    if (xhttp.readyState == 4) {; 
     // handle response 
     var response = xhttp.responseText; 
     console.log(response); 
     if (response == "hej") { 
      var url = "http://localhost:8080/FM3/spil2.jsp"; 
      window.location.href = url; 
     } 
    } 
}; 

// send the request *after* the callback is defined 
xhttp.send(); 
return false; 
} 

function User() { 
username = document.getElementById("username").toString(); 
username = document.getElementById("password").toString(); 
var UserAndPass = "?username=" + username + "&password=" + password; 
return UserAndPass; 
} 

を使用してい

私はあなたに私はそれが働いていない理由を私は、Java、多分あなたが見ることができる持っているクライアントを示しています。

public static void main(String[] args) { 
    Client client = ClientBuilder.newClient(); 

    String root="http://localhost:8080/Footballmanagerrestservice/webresources/"; 


String functionPath="login"; 

String parameters="?username=s153518&password=holger"; 
Response res = client.target(root+functionPath+parameters) 
     .request(MediaType.APPLICATION_JSON).get(); 
String svar = res.readEntity(String.class); 
System.out.println(svar); 
} 
+0

。 User()とは何ですか? – AhmadWabbi

+0

@AhmadWabbiユーザー機能が追加されました:-) –

答えて

1

コードの最初の部分はOKに見える

var response = JSON.parse(xhttp.responseText); 
console.log(response); 
if (response.toString() == "hej") { 
    var url = "http://localhost:8080/FM3/spil2.jsp"; 
    window.location.href = url 
} 
return false; 

はDOC、本質的に非同期であるので、以下ではなく、関数内で処理する必要があります:https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/onreadystatechange

は基本的にあなたが扱うようにしようとしていますレスポンスは同期的な呼び出しとして返されますが、それは即座に利用可能なレスポンスではありません。この理由から、javacriptによって呼び出されるコールバック(フィールドのonreadystatechangeに添付する必要があります)を登録する必要があります。すぐにサーバーの応答が利用可能になります。

はそうのようにそれを変更しよう:あなたはJavaでユーザ名とパスワードを指定しますが、JavaScriptでログイン

xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4) { 
     // handle response 
     var response = JSON.parse(xhttp.responseText); 
     console.log(response); 
     if (response.toString() == "hej") { 
     var url = "http://localhost:8080/FM3/spil2.jsp"; 
     window.location.href = url 
     } 
    } 
    } 

    xhr.send(); 
+0

私はまだ学習状態にあり、JavaScriptとRESTではかなり新しいです。あなたはもっと深く説明できますか? –

+0

ok私の答えを修正します:) – Karim

+0

さて、私はコードを変更しようとしましたが、2つのエラーが発生しています。 GET http:// localhost:8080/Footballmanagerrestservice/webresources/404(見つからない) なぜそれが見つからないのですか? Javaクライアントは正常に動作します。 と次のエラー 捕捉されないでSyntaxError:JSON.parseの位置0 でJSONに予期しないトークン<()XMLHttpRequest.UserAction.xhttp.onreadystatechange(load_user.js:18)で UserActionで(load_user.js。 2835) at HTMLFormElement.onsubmit(index_1_1.html:51) –

関連する問題