2017-07-07 148 views
2

我努力向我的Web服務發送GET請求。在JavaScript中使用GET調用REST風格的Web服務

我有一個Web服務設置,其值分配給x和y值,其中x代表值A-E和y代表值1-5。假設這些值被分配給C1。因此,如果我指向URL:xxxx:xxxx/app/x/c/y/1,那麼我將取回'Success'的響應,如果x和y代表其他值,則我有失敗消息依此類推無效的數據類型。

我似乎無法得到它的工作!

Web服務包含以下邏輯:

log.info 'queryContext = ' + queryContext 
def x = queryContext.get('x',"value") 
def y = queryContext.get('y',"value") 
def yN = y.toInteger() 
log.info 'x = ' + x 
log.info 'y = ' + y 

if (x == 'C' || x == 'c' && y == '4') return("Hit") 
if (yN == 0 || yN > 5) return("Error1") 
def checkX = ['A','a','B','b','C','c','D','d','E','e'].containsAll(x) 
if (checkX == false){return("Error2")}</con:dispatchPath><con:dispatchXPath/><con:parameterDispatcherRuleContainer/><con:routeScript/><con:response name="Hit" id="13e72027-3b34-4771-931a-578bd023d584" httpResponseStatus="200" mediaType="application/json"><con:settings/><con:responseContent>{ 
    "Result":"HIT" 

HTML/JavaScript代碼:

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#btn').click(function() { 
       var obj = { x: $("#xcoord").val(), y: $("#ycoord").val()}; 
       $.ajax({ 
        type: "GET", 
        contentType: "application/json; charset=utf-8", 
        url: "http://x.x.x.x:xxxx/app/", 
        data: JSON.stringify(obj), 
        dataType: "json", 
        success: function (data) { 
         alert(data); 
        } 
       }); 
      }); 
     }); 
    </script> 
<title>Battleships</title> 
</head> 
<body> 
<form> 
X Coordinate:<br> 
<input type="text" id="xcoord"><br> 
Y Coordinate:<br> 
<input type="text" id="ycoord"><br><br> 
<input type="button" value="Submit" id="btn"> 
</form> 
</body> 
</html> 
+0

你嘗試用硬編碼網址打在你的HTML頁面中的JavaScript功能?在'$(document).ready()'函數的$ .ajax()'調用中使用'url:「http://x.x.x.x:xxxx/app/x/c/y/1」 – ArunGeorge

回答

2

你的問題指出:

所以,如果我指向的網址:XXXX :xxxx/app/x/c/y/1然後我會回覆'成功'的回覆

因此您需要發送URL中的值。但是,您當前的jQuery代碼正在查詢字符串中發送它們,因爲您指定$.ajaxdata屬性,即。

x.x.x.x:xxxx/app/?x=c&y=1 

爲了解決這個問題,設置AJAX請求這樣的URL:

$('#btn').click(function() { 
    $.ajax({ 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    url: "http://x.x.x.x:xxxx/app/x/" + $("#xcoord").val() + '/y/' + $("#ycoord").val(), 
    dataType: "json", 
    success: function (data) { 
     alert(data); 
    } 
    }); 
}); 
+0

工作就像一個魅力!謝謝。只需要注意任何人閱讀它,它會在警報中返回對象對象,因此您必須首先將其字符串化爲 – Porkball21

+0

沒問題,很樂意提供幫助。 '[Object object]'的問題是因爲alert()調用'toString()'得到的任何值。因爲這個原因,最好不要使用它,而是使用'console.log()'或'console.dir()'代替 –

+0

謝謝,對於我之前的模糊問題感到抱歉......我應該先做一些研究,懶惰! – Porkball21

相關問題