失礼します。
以前POST、GETどちらかを選択してリクエストを送れる方法を教えていただきました。
POSTでリクエストは問題なくできるのですがGETでリクエストをかけた場合400エラーがコンソールで確認できました。
chromeだけでなくfirefoxなど違うブラウザでも同じようなエラーが生じました。
cygwin上で同じようなリクエストする場合はGETかPOSTを書き換えるだけでリクエストができていたのですが。。。
もしくはHTML上だとGETでリクエストできないのでしょうか?
追記:Developer Toolsで確認したところ下記の「Request Method:GET」の文字の間に赤丸のエラーが出ていました。
xml
1Request URL:http://52.192.178.185:8280/api/dept_accesses?{%22dept_ids%22:[%22BD0004%22],%22start_date%22:%2220151001%22,%22end_date%22:%2220161207%22} 2Request Method:GET 3Status Code:400 Bad Request 4Remote Address:52.192.178.185:8280
HTML
1<body> 2<html> 3 <td><b>URL: <input type="text" id="url_post" name="url" size="100" value="http://52.192.178.185:8280/api/dept_accesses"></b><td> 4 </tr><td> </td> 5 <td><b>店舗ID:<textarea cols="50" id="dept_ids" pattern="^[0-9A-Za-z]+$" class="keyword"></textarea></td> 6 </tr> 7 <tr><td><b>開始日: <input type="text" id="start_date" size="30" value="20151001" class="keyword"> 8 ~ 終了日: <input type="text" id="end_date" size="30" value="20161207" class="keyword"> 9 <select id="method_select"> 10<option value="GET" selected>GET</option> 11<option value="POST">POST</option> 12</select> 13<button type="submit" value="送信"> 14</button> 15 <button id="button" type="button">検索結果</button></p></td> 16 <td><textarea id="response" cols=170 rows=21 disabled></textarea></td> 17</body> 18</html>
javascript
1$.ajax({ 2 url : url, 3 type : ("#method_select").val(), 4 data : JSON.stringify(JSONdata), 5 contentType: "application/json;charset=UTF-8", 6 processData: false, 7 dataType : "json", 8 accepts : {json: "application/vnd.glv.v1+json;charset=UTF-8"}, 9 crossDomain: false 10}).done(function(data, status, xhr) { 11 $("#response").html(JSON.stringify(data)); 12}).fail(function(xhr, status, error) { 13 // 通信失敗時の処理 14 alert("失敗"); 15}).always(function(arg1, status, arg2) { 16 // 通信完了時の処理 17 alert("完了"); 18 });
1/18追記2 以下はGET、POSTでフォーム選択できるソースです。
HTML
1<form action="http://52.192.178.185:8280/api/rankings" id="FORM" Accept-charset="UTF-8"> 2<b>ランキング種別</b><font color="RED">:必須</font><br> 3<p>【車種別:0】【メーカー別:1】【ボディタイプ別:2】【メーカー別:3】【国産車別:4】【輸入車別:5】</p> 4<p><input type="text" value="0" name="kind" placeholder="例:0" pattern="^[0-9]+$" class="keyword"></p> 5 6~~略~~ 7 8<b>リクエスト方法</b><br> 9<select id="method_select"> 10<option value="GET" selected>GET</option> 11<option value="POST">POST</option> 12</select> 13<button type="submit" class="btn btn-default btn-sm dropdown-toggle"> 14<span class="glyphicon glyphicon-search" aria-hidden="true"></span> 15</button> 16
javascript
1 $(function() { 2 $('#FORM').on('submit', function(e) { 3 e.preventDefault(); 4 var $form = $(this).clone(); 5 $form.prop('method', $('#method_select').val()); 6 $(this).find(':input').each(function() { 7 var $element = $(this); 8 if ($element.val() == '') { 9 $form.find('*[name="' + $element.prop('name') + '"]').remove(); 10 } 11 }); 12 $form.submit(); 13 }); 14 });
1/21追記
eripong様からWiresharkというアプリを使いどんなデータが送られている調べることができました。
その結果POST時とGET時のリクエストパラメーターが一緒のため片方にエラーが生じてしまうといった原因が判明しました。
ですので今後の処理としてリクエストパラメーター自体を変更しないといけないので本スレッドを閉め今回判明した問題を他トピックで質問させていただきます。
回答3件
あなたの回答
tips
プレビュー