从不同的服务器访问时,Jquery自动完成功能不起作用

时间:2012-02-17 08:06:26

标签: jquery asp.net autocomplete

我们在HTML页面中使用jquery自动完成功能,用于文本框中的前面类型。 我们使用的是一个调用.net页面的JQuery,实时调用该服务并返回JSON。 这里的问题是,当它们都在同一台服务器上时,这是有效的。 但我们的要求是HTML页面位于不同的服务器中,并且它调用的.net页面位于不同的服务器中。

我在IIS中的一个服务器上托管了.net页面,HTML页面的Jquery调用了这个托管页面。当它通过IIS时,它会给出一个错误“访问被拒绝”。 我认为这是由于IIS不同的安全级别设置。

当我在本地打开它时,IE要求“允许阻止内容”w.r.t到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 个答案:

答案 0 :(得分:4)

问题是Ajax调用只允许在同一个域上(参见相同的源策略:http://en.m.wikipedia.org/wiki/Same_origin_policy)。除非使用JSONP,否则无法在其他服务器上调用服务。

答案 1 :(得分:0)

同意Fox32您无法使用ajax进行远程调用。尝试JQuery UI Autocomplete它有JSONP支持。查看http://jqueryui.com/demos/autocomplete/remote-jsonp.html

上的演示