问题 ajax jquery简单获取请求


我正在使用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呢? 谢谢!


11251
2018-02-13 22:52


起源

你有没有尝试过添加dataType:“jsonp” - Kai Qing
@KaiQing,这根本不是问题。否则,将不会调用成功处理程序。此外,示例响应不是JSONP响应。 - Brad
@PragmaOnce,使用packetsniffer检查您的标头,例如Wireshark。我怀疑你会发现浏览器发送的内容和AJAX调用之间存在一些差异。 - Brad


答案:


在我看来,这是一个跨域问题,因为您不允许向其他域发出请求。

你必须解决这个问题: - 使用在您的服务器上运行的代理脚本,该脚本将提供您的请求,并将处理将其发送到浏览器的响应 要么 - 您提出请求的服务应该具有JSONP支持。这是一种跨域技术。你可能想读这个 http://en.wikipedia.org/wiki/JSONP


6
2018-02-13 23:06





var dataString = "flag=fetchmediaaudio&id="+id;

$.ajax
({
  type: "POST",
  url: "ajax.php",
  data: dataString,
  success: function(html)
  {
     alert(html);
  }
});

3
2017-12-05 12:53





您可以向从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/ 


1
2018-02-13 22:57





我认为问题是成功函数中没有数据,因为请求在您的情况下因401错误而中断,因此没有成功。

如果你使用

$.ajax({
        url: "https://app.asana.com/-/api/0.1/workspaces/",
        type: 'GET',
         error: function (xhr, ajaxOptions, thrownError) {
    alert(xhr.status);
    alert(thrownError);
  }
    });

我认为会有你的401代码(这个链接  如此说)


1
2018-04-02 15:04





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

0
2017-07-06 09:07