我正在使用jquery ajax创建这个简单的get请求:
$.ajax({
url: "https://app.asana.com/-/api/0.1/workspaces/",
type: 'GET',
success: function(res) {
console.log(res);
alert(res);
}
});
结果是返回一个空字符串。如果我在浏览器中转到此链接,我会得到:
{"status":401,"error":"Not Authorized"}
这是预期的结果。那么为什么不使用ajax呢? 谢谢!
答案 0 :(得分:8)
在我看来,这是一个跨域问题,因为您不允许向其他域发出请求。
您必须解决此问题: - 使用在您的服务器上运行的代理脚本,该脚本将提供您的请求,并将处理将其发送到浏览器的响应 要么 - 您提出请求的服务应该具有JSONP支持。这是一种跨域技术。您可能需要阅读此http://en.wikipedia.org/wiki/JSONP
答案 1 :(得分:7)
您可以向从SAME域和SAME端口加载的应用程序发出AJAX请求。
除此之外,如果希望自动反序列化结果,则应添加dataType JSON
。
$.ajax({
url: "https://app.asana.com/-/api/0.1/workspaces/",
type: 'GET',
dataType: 'json', // added data type
success: function(res) {
console.log(res);
alert(res);
}
});
答案 2 :(得分:5)
var dataString = "flag=fetchmediaaudio&id="+id;
$.ajax
({
type: "POST",
url: "ajax.php",
data: dataString,
success: function(html)
{
alert(html);
}
});
答案 3 :(得分:1)
我认为问题在于成功函数中没有数据,因为请求在您的情况下因401错误而中断,因此没有成功。
如果您使用
$.ajax({
url: "https://app.asana.com/-/api/0.1/workspaces/",
type: 'GET',
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
我认为会有你的401代码(this link 这样说)
答案 4 :(得分:0)
var settings = {
"async": true,
"crossDomain": true,
"url": "<your URL Here>",
"method": "GET",
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"data": {
"username": "user@company.com",
"password": "12345678"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});