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 函数发出简单的请求

使用 jQuery 的简单 AJAX HTTP GET [重复]

jQuery:简单Ajax请求+事件处理程序

在 Jquery Ajax POST 中获取 400 错误请求错误

jQuery使用ajax跨域请求获取数据