IE 使 Jquery.html 失败,权限被拒绝
Posted
技术标签:
【中文标题】IE 使 Jquery.html 失败,权限被拒绝【英文标题】:IE fails Jquery.html with Permission Denied 【发布时间】:2012-06-28 07:41:22 【问题描述】:我有一个在 Firefox 中运行良好的 ajax 调用,但在 jquery.min.js 文件中出现权限被拒绝错误。我不知道出了什么问题,或者如何解决它。这是我的帖子:
(发布前声明的所有内容)
$.ajax(
type: "POST",
url: "../ajaxURLs/SearchRequests.aspx?requestID=" + requestID + "&state=" + state + "&status=" + status + "&queue=" + queue + "&oem=" + oem +
"&rayMatNumber=" + rayMatNumber + "&mfgPartNumber=" + mfgPartNumber + "&program=" + program + "&po=" + po + "&pr=" + pr +
"&businessUnit=" + businessUnit + "&site=" + site + "&buyer=" + buyer + "&requisitioner=" + requisitioner + "&ce=" + ce + "&rea=" + rea + "&pqe=" + pqe +
"&startDate=" + startDate + "&endDate=" + endDate,
cache: false,
success: function (data)
$("#searchResults").html(data);
sorttable.makeSortable(document.getElementById("SearchResults"));
$("#MainContent_excelDiv").show();
);
有什么想法吗?如果我将 map 直接带到我的 SearchRequests.aspx 并传递参数,那么它在 Firefox 和 IE 中都可以正常工作,只有通过 ajax 完成。
是的,我使用了 f12。错误是“Permission Denied”jquery.min.js,第 9 行字符 2805。我使用的是 jquery 版本 1.7.2。
如果我删除将 searchResults div 设置为数据,并添加一个警报以显示数据,它会完成该操作并在警报中包含正确的信息。 Fiddler 显示正在生成的正确 html,Firefox 工作正常,它只是 IE。其他 ajax 帖子在 IE 中也可以正常工作。
【问题讨论】:
你试过调试吗? IE 具有带有 min-script-formatter 的调试器 (F12),因此推断错误应该不会太难。对于问题本身,至少提供确切的错误,以及它发生的位置。 首先,如果你要使用 POST,你不应该在查询字符串中传递你的数据;这就是data
选项的用途。其次,您可以逐字发布错误消息吗?
@marteljn,将其发布为答案 - 我敢打赌“POST”正是 OP 失败的原因。
@shawleigh17,请检查您是否同意我对您问题的编辑(标题更改)
【参考方案1】:
尝试将您的 type
从 POST
切换到 GET
。您正在进行搜索,因此无论如何都是合适的。这可以解释为什么它在所描述的场景中起作用,而不是在您的 AJAX 请求中起作用。
POST
只能在您在服务器端修改数据时使用,而GET
用于只读数据检索。
编辑
将$("#searchResults").html(data);
替换为document.getElementById("searchResults").innerHTML = data;
在那个JQuery 语句中发生了一些奇怪的事情,看看在那个实例中不使用JQuery 是否会起作用。如果它显示在警报中,它也应该在该上下文中工作。
【讨论】:
您的所有资源是否都来自同一个域(甚至是子域)、协议 (http/https) 和端口?这听起来可能是一个跨域/同源策略问题。 +1 因为这是上帝根据原始问题的猜测。 @shawleigh17,所以您的实际错误是$("#searchResults").html(data);
由于 data
的值而失败(与 ajax 查询无关),对吗?
另一个问题是你是碰巧处理框架还是 iframe?我正在尝试找出您可能会收到权限被拒绝错误的原因。
尝试添加 "dataType" : "html"
或您希望返回的任何类型作为巡回 ajax 选项。
将$("#searchResults").html(data);
替换为document.getElementById("searchResults").innerHTML
= 数据;该 JQuery 语句中发生了一些奇怪的事情,看看在该实例中不使用 JQuery 是否会起作用。如果它显示在警报中,它也应该在该上下文中工作。以上是关于IE 使 Jquery.html 失败,权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
SCRIPT70:在 IE 中访问 iFrame 的权限被拒绝