2016-06-22 3 views
0

にリダイレクトします。私は1つの場所で立ち往生しています。私の要件は、REST APIを呼び出して値を取得し、ページを別のURLにリダイレクトすることです。RESTからデータを取得し、私はHTMLとJavaScriptを学んでいます別のページ

コードスニペット:

HTML

<!DOCTYPE html> 
<html> 
<body> 

    //REST SERVICE CALL 
    <form action="http://localhost:51349/SMS_Rest.svc/v1/CheckBox" method="get" > 
     <input type="checkbox" id = "1" name="graphId" value="1"> Graph1<br> 
     <input type="checkbox" id = "2" name="graphId" value="2"> Graph2<br> 
     <input type="checkbox" id = "3" name="graphId" value="3"> Graph3<br> 
     <input type="checkbox" id = "4" name="graphId" value="4"> Graph4<br> 
     <input type="submit"> 
    </form> 

</body> 
</html> 

私はTRUEとしてRESTサービスからの応答を取得提出ヒット。しかし、リダイレクトされたURLは、HTMLのactionフィールドに記述されているREST URLと自動的に一致します。しかし、私はRESTからデータを取得して、別のページにユーザーをリダイレクトする必要があります。私はここで理にかなっています。親切に私を助けてください。

+1

私はあなたがAJAXを介してデータをフェッチするために見ると思うし、終了したら、JavaScriptでリダイレクトします。あなたのAPIにフォームを提出しないでください。 jquery AJAX callsについて読む.http://api.jquery.com/jquery.ajax/ – Leeish

答えて

1

最善の解決策は、フォームを送信することであろうフォームに残りフォーム」:

jQuery("#rest-form").submit(function(e){ 
    //The following stops the form from redirecting 
    e.preventDefault(); 
    jQuery("#rest-form").ajaxSubmit({ 
     type: 'GET', 
     url: jQuery('#rest-form').attr('action'), 
     data: jQuery('#rest-form').serialize(), 
     success: function (data) { 
      //The data variable will contain the response data 
      //if it's successful, you can no redirect wherever you want 
      window.location.href = "http://www.example.com"; 
     } 
    }); 
}); 
0

それは、リダイレクトをトリガー誰提出しています。 私はあなたがAJAX呼び出しを使用することをお勧め、このような何か:

var xhttp = new XMLHttpRequest(); 
xhttp.open("GET", "http://localhost:51349/SMS_Rest.svc/v1/CheckBox?graphId=" + graphId, true); 
xhttp.send(); 
var response = xhttp.responseText; 

は、要求の応答を取得し、正しいは次のようにリダイレクトした場合:

document.location.href="redirectionTarget"; 

はEDIT:ネイティブJavascriptを少し安っぽいですLeeishが言っているように、代わりにjqueryのようなライブラリを使いたいかもしれません。

1

あなたはREST呼び出しを行うために、フォームを使用しているあなたの質問に使用されるものとは?これはREST呼び出しを行う通常の方法ではありません。

HTTP/1.1 301 Moved Permanently 
Location: http://www.example.org/otherpage 

これに行うが、非RESTエンドポイントでフォームを投稿することであろう他の方法:あなたがこれを行う上で主張している場合でも、次のようなリダイレクトで応答するためにあなたのRESTサービスの応答を変更する必要がありますたとえば、フォームの検証を行います。他のクライアント側の検証を行う前にRESTサービスに呼び出す必要がある場合は、window.XMLHttpRequestを使用してフォームを送信する前にREST呼び出しを非同期に処理する必要があります(onsubmitイベント)。 http://rest.elkstein.org/2008/02/using-rest-in-javascript.html

しかし、多分、あなたのユースケースに応じて、あなたのフォームを普通に投稿する必要があるかもしれません。しかし、フォームをRESTサービスに提出することは、おそらく標準的なアプローチではありません。 Ajax Form Plugin その後、IDを追加した後=」 -

まずあなたはjQueryのフォームのプラグインが必要です:AJAXは、あなたがしたいURLにリダイレクトすると私は考えることができる

+0

あなたはまったく正しいです。私は学んだので、私はこの考えを持っていませんでした。私は自分のコードを変更する必要があります。 – Unbreakable

関連する問題