2017-07-07 131 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