在调用我编写的java rest服务器时,我遇到了一些ajax困难(并且对ajax很新,但是做了一些搜索)。我在Rest服务器中运行了一个测试html页面(使用Jetty),我使用以下调用 - 使用.get成功运行:
$('#getRVLakeForm').submit(function(e) {
var handle = $('#insertRVLakeHandle').val();
var lakekey = $('#RVLakeKey').val();
var temp = $('#RVLakeTemp').val();
var speed = $('#RVLakeWindspeed').val();
var degrees = $('#RVLakeWindDegrees').val();;
$.get('${pageContext.request.contextPath}/api/recent/lake/' + handle + "/" + temp + "/" + speed + "/" + degrees + "/" + lakekey, function(data) {
alert(data.lake[0].oid);
$('#RMLakeResponse').text("back");
});
这是Rest服务器返回的JSON:
{ “用户”:[], “湖”:[{ “OID”: “519b9a1a3004f8fa1287502a”, “类型”: “湖”, “手柄”: “夜行”, “viewedhandle”: “”,“viewedlaketag “:” TXFORK”, “viewedusername”: “”, “时间戳”:1369152026668}]}
此调用执行Rest Api并按预期返回JSON ...当我尝试从HTML / PHP应用程序调用相同的Rest Api时,在MAMP下运行 - ajax调用在out绑定调用上工作 - 我可以调试Java Rest服务器并查看调用进来,并按设计执行创建JSON以发送出去。问题是我从未在ajax调用中调用success函数(我没有看到调用的错误函数)。
urlrecent = "http://localhost:8080/server/api/recent/lake/" + handle + "/" + temp + "/" + speed + "/" + degrees + "/" + lakekey;
$.ajax({
type: "GET",
contentType: "application/json",
dataType: "jsonp",
url: urlrecent,
success: function (data) {
alert("hello there!");
alert(data)
},
error: function () {
alert('failed');
}
});
我甚至尝试过getJSON而不是运气。与此同时,我将继续搜索Stack和Web以寻找可行的方法。我也试过了一个只是“json”的数据类型。
提前致谢。
=====
是的,使用了contentType,但这没关系。
答案 0 :(得分:0)
在IE8中试用并设置dataType: "html"
urlrecent = "http://localhost:8080/server/api/recent/lake/" + handle + "/" + temp + "/" + speed + "/" + degrees + "/" + lakekey;
$.ajax({
type: "GET",
contentType: "application/json",
dataType: "html",
url: urlrecent,
success: function (data) {
alert("hello there!");
data = JSON.parse(data);
alert(data)
},
error: function () {
alert('failed');
}
});
如果在data = JSON.parse(data)
或警告中出现“hello there”时出现语法错误,则表示编码问题。在这种情况下,您应该使用response.setCharacterEncoding("UTF8")