Как сделать Ajax-запрос внутри Azure Mobile Services api

#azure #azure-mobile-services

#azure #azure-mobile-services

Вопрос:

Я хочу создать сообщение jquery ajax внутри моего метода получения API Azure mobile services. то есть что-то вроде того, что я привел ниже. То есть я хочу, чтобы метод GET возвращал данные, которые возвращают что-то из результата моего сообщения ajax.

Не очевидно, как я это сделаю.

 exports.get = function(request, response) {

 $.ajax({
  type: "POST",
  url: url,
  data: data,
  success: function(x) { return MYLIST },
  dataType: dataType
});

   response.send(statusCodes.OK, { message : 'Hello World!' });
};
  

Обновить:

Согласно сообщению Карлоса: http://blogs.msdn.com/b/carlosfigueira/archive/2013/12/12/expanded-login-scopes-in-azure-mobile-services.aspx Теперь я понимаю, что код exports.get должен находиться в разделе API мобильной службы Azure. Когда я помещаю этот код в этот раздел, я получаю внутреннюю ошибку 500 в случае сбоя вызова jquery. мое предупреждение показывает, что я успешно вошел в Google.

     var client = new WindowsAzure.MobileServiceClient('https://svcc.azure-mobile.net/', val);
    $(document).ready(function () {
        $("#submit1").click(function () {
            client.login("google").done(function (results) {
                alert("You are now logged in as google: "   results.userId);
                $.ajax({
                    url: "http://xxxxx.azure-mobile.net/api/test1",
                    success: function (data, textStatus) {
                        debugger;
                        //data - response from server
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        debugger;
                    }
                });
            }, function (err) {
                alert("Error: "   err);
            });
        });
  

Ответ №1:

Вы должны использовать некоторые node.js модуль, который позволяет вам делать HTTP-запросы. Самым простым является модуль «запрос», который вы можете require использовать в серверном скрипте и использовать его для отправки запросов. Например, этот код должен делать то, что вы хотите:

 exports.get = function(request, response) {
    var req = require('request');
    req({
        url: url,
        method: 'POST',
        body: JSON.stringify({ theBody: [ 'hello', 'world' ]}),
        headers: { "Content-Type": "application/json" }
    }, function(err, result) {
        response.send(statusCodes.OK, result);
    }
}
  

Комментарии:

1. чтобы получить другие данные из служб odata, таких как Google, будет ли это правильным решением? Есть ли способ получить доступ к ключевым / секретным данным Google, которые находятся в разделе azure identity в скриптах?

2. ПРИВЕТ, Карлос, проигнорируй мой комментарий выше. Теперь я понимаю ваш декабрьский пост намного лучше. Я обновил свой пример выше, включив вызов метода get из вашего примера, и теперь я получаю внутреннюю ошибку 500.

3. и еще один намек, identities равно null, — это ошибка, возникающая при вызове моего API test1. dl.dropbox.com/s/9cy44nb6topzrxp/az1.png

4. Я нашел другую статью Карлоса, в которой говорилось, что я должен был включить это в качестве функции предварительного просмотра. Я сделал это, и я все еще ничего не получаю от getIdentities. смотрите, как я включил. dl.dropbox.com/s/4amjcr1hpvebn2y/az2.png

5. обновлено изображение из комментария выше с включением функции предварительного просмотра для пользователей dl.dropbox.com/s/muohffefpnyfkz9/az3.png