我的脚本视图页面中有两个变量,一个称为产品,另一个称为其他站点。 我已经这样宣布了他们。
Add.cshtml查看:
$(function () {
products;
sites;
GetProductsAndSites(productsURL, sitesURL, '@Model.Key', false);
});
我在另一个.js文件中调用ajax函数。
People.js
function GetProductsAndSites(productsURL, sitesURL, secondLevelSiteKey, flag) {
$.ajax({
type: "POST",
url: productsURL,
async: false,
success: function (returndata) {
if (returndata.ok) {
**products = returndata.dataNames;**
//var tempProducts = returndata.dataNames;
$('#select-product').autocomplete({
delay: 0,
minLength: 1,
source: returndata.dataNames,
select: function (event, ui)
{
$.ajax({
type: "POST",
url: sitesURL,
data: { "productID": selectedProductID, "siteID": secondLevelSiteKey },
async: false,
success: function (returndata) {
if (returndata.ok) {
//products = tempProducts ;
**sites = returndata.dataNames;**
$('#select-site').autocomplete({
delay: 0,
minLength: 1,
source: returndata.dataNames,
select: function (event, ui) {
$("#select-site").val(ui.item.label);
});
}
});
}
}
});
}
它抛出“对象不支持此属性或方法”异常(products = returndata.dataNames;)行...起初我认为它看不到产品vairalble,但后来我意识到它可以看到“sites”变量,所以我评论了产品系列,并期望它会在网站行抛出相同的异常,但它的工作正常。
我尝试创建一个局部变量并将returndata.dataNames存储在其中而不是产品vairalbe中,然后在站点行之前设置产品值,但仍然会引发异常。我试图将产品线放在网站之后,它也在产品线上抛出相同的例外。
帮助!
答案 0 :(得分:1)
搜索和搜索后,我终于找到了解决方案。用IE8测试。
覆盖
if ('XDomainRequest' in window && window.XDomainRequest !== null) {
jQuery.ajaxSettings.xhr = function() {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) { }
jQuery.support.cors = true;
}
}
制作ajax请求
$.ajax({
type: 'GET',
url: "your-url",
async: true,
cache: false,
crossDomain: true,
contentType: 'application/json; charset=utf-8',
dataType: 'json'
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log('ERROR: ' + errorThrown);
})
.always(function() {
// Do stuff
});
答案 1 :(得分:0)
对于我来说,这个答案很有帮助,我在其中检测到IE浏览器,如果它的浏览器低于7,则将ActiveXObject设置为XMLHttpRequest。
jQuery.ajaxSettings.xhr: function() {
// detect if IE and older versions of IE
if (jQuery.browser.msie && jQuery.browser.version.substr(0, 1) <= 7)
return new ActiveXObject("Microsoft.XMLHTTP");
else
return new XMLHttpRequest();
}
参考: