ajax jquery simple получить запрос

Я делаю этот простой запрос get, используя jquery ajax:

$.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? Спасибо!

Ответ 1

Мне кажется, что это междоменная проблема, поскольку вам не разрешено делать запросы к другому домену.

Вы должны найти решение этой проблемы: - Используйте прокси-скрипт, работающий на вашем сервере, который перенаправит ваш запрос и обработает ответ, отправив его в браузер Или же - Служба, к которой вы делаете запрос, должна иметь поддержку JSONP. Это междоменная техника. Вы можете прочитать это http://en.wikipedia.org/wiki/JSONP

Ответ 2

Вы можете отправлять запросы 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/

Ответ 3

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

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

Ответ 4

я думаю, проблема в том, что в функции успеха нет данных, потому что запрос разбивается с ошибкой 401 в вашем случае и, следовательно, не имеет успеха.

если вы используете

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

будет ваш код 401, который я думаю (эта ссылка говорит так)

Ответ 5

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