ajax jquery 简单获取请求
Posted
技术标签:
【中文标题】ajax jquery 简单获取请求【英文标题】:ajax jquery simple get request 【发布时间】:2012-03-05 08:54:19 【问题描述】:我正在使用 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 呢? 谢谢!
【问题讨论】:
你有没有试过在里面添加 dataType: "jsonp" @KaiQing,这根本不是问题所在。否则,将不会调用成功处理程序。此外,示例响应不是 JSONP 响应。 @PragmaOnce,使用数据包嗅探器检查您的标头,例如 Wireshark。我怀疑您会发现从浏览器发送的内容与通过 AJAX 调用发送的内容之间存在一些差异。 【参考方案1】:您可以向从 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);
);
http://api.jquery.com/jQuery.ajax/
【讨论】:
【参考方案2】:在我看来,这是一个跨域问题,因为您不允许向其他域发出请求。
您必须找到解决此问题的方法: - 使用代理脚本,在您的服务器上运行,它将转发您的请求并处理将其发送到浏览器的响应 要么 - 您发出请求的服务应该支持 JSONP。这是一种跨域技术。您可能想阅读此http://en.wikipedia.org/wiki/JSONP
【讨论】:
【参考方案3】:var dataString = "flag=fetchmediaaudio&id="+id;
$.ajax
(
type: "POST",
url: "ajax.php",
data: dataString,
success: function(html)
alert(html);
);
【讨论】:
POST 和 GET 是不同的 HTTP 方法,请阅读一些关于 HTTP 协议的信息【参考方案4】: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);
);
【讨论】:
【参考方案5】:我认为问题在于成功函数中没有数据,因为在您的情况下请求因 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 这么说)
【讨论】:
以上是关于ajax jquery 简单获取请求的主要内容,如果未能解决你的问题,请参考以下文章
Ajax 调用失败。使用 Jquery .ajax 函数发出简单的请求
使用 jQuery 的简单 AJAX HTTP GET [重复]