我们在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
});
});
答案 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
上的演示