Как получить доступ к простому веб-сервису с помощью jQuery

#jquery

#jquery

Вопрос:

У меня есть этот «веб-сервис», который я создал при доступе:

 "http://192.168.0.1/api/v1/search/?query=thequery"
  

возвращает строку JSON в качестве результата. Это очень просто, это просто возвращает строку.

Я пытаюсь получить к нему доступ со своего клиентского сайта, используя jQuery:

 function doSearch() {
    $.ajax({    
        url: "http://192.168.0.1/api/v1/search/?query="   $('#searchfield').val(),
        dataType: 'jsonp',
        success: function(json_results){
            alert('Alert title', 'Alert message!');
        },
        error: function() {
            alert('Error', 'Alert message!');
        }
    });
}
  

Хотя я, когда веб-сервис возвращается должным образом при доступе с помощью curl или веб-браузера, при доступе через $.ajax он всегда завершается с ошибкой, показывая окно предупреждения об ошибке.

РЕДАКТИРОВАТЬ: Из консоли Firebug я получаю:

 Content-Type    application/json; charset=utf-8
Content-Length  131
Connection  keep-alive
  

Однако ответ пуст.

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

1. Итак, какова информация об ошибке? Почему вы пытаетесь получить к нему доступ с помощью jsonp, если это не служба jsonp?

2. Это вопрос поддержки / ошибки / чата, а не вопрос SO.

3. @Dave Newton Я только что ввел эту ошибку: function (), как мне получить информацию об ошибке, о которой вы говорите?

4. Эта информация содержится в документах функции jquery .ajax() .

Ответ №1:

 dataType: 'jsonp'
  

У вас нет сервиса JSONP; вы просто возвращаете JSON.

Итак, используйте правильный datatype :

 dataType: 'json'
  

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

1. Спасибо, однако по-прежнему вызывается функция ‘error: function()’.

Ответ №2:

Для этой цели можно использовать Jquery.getJSON.

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

1. Можете ли вы привести мне пример использования getJSON для этого экземпляра?

2. Например; $.getJSON(» 192.168.0.1/api /v1 /search «, { запрос: «бла»}, функция (данные) { … });

3. Интересно, почему, когда я пробовал этот подход, функция обратного вызова не вызывалась? Я просто поместил ‘alert (data);’, чтобы посмотреть, будет ли вызван обратный вызов.

4. Я попробовал Firbug и вижу, что параметр есть, то есть запрос. Ответ от GET пуст.

5. Функция $ (‘#submit’).click, которая запускает doSearch, привязана к привязке, может ли это быть проблемой?