Автозаполнение Jquery не работает при доступе с другого сервера - PullRequest
0 голосов
/ 17 февраля 2012

Мы используем функцию автозаполнения jquery на странице HTML для типа вперед в текстовом поле. Мы используем JQuery, который вызывает страницу .net, которая интернов вызывает сервис и возвращает JSON. Проблема здесь в том, что это работает, когда все они находятся на одном сервере. Но наше требование таково, что страница HTML находится на другом сервере, а страница .net, которую она вызывает, - на другом сервере.

Я разместил страницу .net в IIS на одном сервере, и Jquery на HTML-странице вызывает эту размещенную страницу. Когда он проходит через IIS, он выдает ошибку «ACCESS IS DENIED». Я думаю, что это связано с различными настройками уровня безопасности IIS.

Когда я открываю его локально, IE запрашивает «разрешить заблокированный контент» с помощью элемента управления Active X, и когда я принимаю его, он начинает работать, но через IIS я не получаю это разрешить заблокированный контент в IE.

$(document).ready(function() {
    $.ajaxSetup({
        type: "POST"
    });
    $('input[type=text][id$=txtTest]').autocomplete("server/testpage", {
        dataType: "json",
        minChars: 2,
        datakey: "JsonExam",
        max: 10,
        width: 605,
        formatItem: function(item) {
            return item.Name;
        },
        useValidation: true
    });
})​;​

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012

Проблема в том, что вызов Ajax разрешен только в одном домене (см. Ту же политику происхождения: http://en.m.wikipedia.org/wiki/Same_origin_policy).Вы не можете вызвать службу на другом сервере, кроме случаев, когда вы используете JSONP.

0 голосов
/ 17 февраля 2012

Согласитесь с Fox32, что вы не можете делать удаленные вызовы с помощью ajax. Попробуйте JQuery UI Autocomplete, он поддерживает JSONP. Проверьте демо на http://jqueryui.com/demos/autocomplete/remote-jsonp.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...