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