关于javascript:ajax jquery simple get请求

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请求。

除此之外,如果希望自动反序列化结果,还应该添加dataType JSON

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);
    });