我正在尝试使用jquery .ajax(或.get,.post等)通过http访问第三方API。 api位于我的机器上
http://localhost:7777/server/<method>?<args>
服务器有一堆查询其OLAP服务器的方法,例如登录(返回用于其他方法的登录密钥),数据库(列出服务器上的数据库),多维数据集,维度等等。
例如
登录服务器
http://localhost:7777/server/login?user=admin&password=21232f297a57a5a743894a0e4a801fc3
如果我将其输入浏览器地址栏,我会收到正确的数据。
但是,我想制作一个小网页来测试调用,并认为我应该能够使用jQuery创建获取并返回到浏览器的数据。
继承我的代码
<html>
<head>
<title>Palo Test Report</title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" language="javascript">
function calculate(){
$.ajax({
type:"GET",
url:"http://localhost:7777/server/login?user=admin&password=21232f297a57a5a743894a0e4a801fc3&callback=?",
success: function(data,textStatus){
alert(data + ":" + textStatus);
}
,
error: function(request,errorStatus,errorThrown){
alert("Error:" + errorThrown);
}
});
}
</script>
</head>
<body>
<div>Sample Palo Report #1</div>
<input type="button" value="Calculate" onclick="calculate();" />
</body>
</html>
该方法进入服务器并点击成功回调。但是,数据参数是一个空字符串。
我读了一些关于通过ajax进行跨域访问问题的帖子,看起来这可能是因为服务运行不同的端口可能会发生什么,尽管我对“成功”标志感到有些惊讶。另一件奇怪的事情是,如果我在IIS中创建一个新的虚拟目录并将文件放在那里,我会使用一个空的errorThrown参数来查看错误回调。
service / api返回简单字符串而不是json,因此getJSON不起作用。
我正在尝试使用jQuery吗?
我确实有一个解决方法,但它非常难看!
提前致谢
答案 0 :(得分:2)
我的猜测是您的测试网页位于 http://localhost:7777 ,因为否则无效。
$。ajax 按预期工作,但由于您未提供选项 dataType:“jsonp”:
现在,服务器响应肯定不是 XML ,也不是 HTML ,但请求成功。因此,您最终会使用空数据参数调用成功回调(尽管我希望在其正文中包含响应文本的基本 HTML 文档)。
只需在您的选项中添加 dataType:“jsonp”,它就可以正常运行。
答案 1 :(得分:1)