【问题标题】:Access denied jquery error in IE 8IE 8 中的访问被拒绝 jquery 错误
【发布时间】:2011-09-26 01:39:50
【问题描述】:

我正在使用 jquery 提交表单。现在我需要将表单信息发送到外部服务器。以下是我将表单提交到另一台服务器的代码部分。它适用于除 IE 之外的所有浏览器,这给了我访问被拒绝的错误。

$.ajax({
    url:"https://www.thewiseagent.com:443/secure/webcontactAllFields.asp",
    type:'POST',
    data:"ID=" + $ID + "&Source=" + $Source + "&notifyCc=" + $notifyCc + "&notifyBcc=" + $notifyBcc + "&noMail=" + $noMail + "&CFirst=" + $first + "&CLast=" + $last + "&Phone=" + $Phone + "&Fax=" + $Fax + "&CEmail=" + $CEmail + "&Message=" + $message,
    success: function() {
    }
});

有什么帮助吗?

【问题讨论】:

  • 如果您要发布表单;你应该明确地使用$("#myForm").serialize() (api.jquery.com/serialize)
  • 你怎么知道它在其他浏览器中工作?我怀疑它对它们中的任何一个都不起作用,它们只是更好地抑制错误。
  • @kasdega 确实.. 很多人不知道 JavaScript 控制台,因此他们认为一切都在 FF 或 Chrome 中正常工作。 :-S
  • 好吧,我可以在外部数据库中插入数据,尽管在 firefox/chorme 的情况下出现错误(302 对象已移动),但在 IE 数据未进入外部数据库的情况下。在 IE 中,我收到拒绝访问错误。那我现在该怎么办?
  • @Naveen 看到尼克对我的回答的评论......显然,对于某些浏览器,您实际上可以发布到外部域但看不到结果。因此,您的外部站点可能正在获取 POST 并存储数据,但您无法返回并查看任何内容。

标签: php javascript jquery ajax


【解决方案1】:

您不能对不同的域进行 AJAX 调用。在这里查看我的答案:jQuery ajax GET returns 405 Method Not Allowed

话虽如此,如果它在其他浏览器中确实有效,那么我假设您发布到同一个域。然后你必须查看返回的内容。您应该没有理由从 IE 获得 405 而不是从 FF。

我怀疑这也不适用于其他浏览器,因为 javascript 安全限制。

【讨论】:

  • 这不是严格正确的,这里有两套限制,这取决于你在做什么。 A)你可以发帖吗? B)你能看到结果吗?这取决于浏览器、域和协议,但有些允许您跨域执行 A,尽管没有一个允许您执行 B(默认情况下)。所以在某些情况下你可以 POST,只是看不到结果。
  • @Nick Craver 很有趣,我不知道 A,我得研究一下。感谢您的提示。
  • 好吧,我可以在外部数据库中插入数据,尽管在 firefox/chorme 的情况下出现错误(302 对象已移动),但在 IE 数据未进入外部数据库的情况下。在 IE 中,我收到拒绝访问错误。那我现在该怎么办?
  • @Naveen 您所看到的行为的解释在尼克的评论中。其他浏览器能够 POST 到外部服务,但无法得到响应。 IE 根本不能/不会在外部发布。您需要考虑创建某种代理来为您建立外部连接。有关我在此答案中链接到的类似问题,请参阅我的答案。
  • 还有一件事我忘了提到,在 firefox/chrome 的情况下,我得到 302 对象移动错误。尽管出现了这个错误,我还是能够在外部数据库服务器中插入数据,在 IE 的情况下,我得到了拒绝访问错误。但是在 IE 的情况下,数据不会插入。你仍然认为代理是真正的问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 2013-12-20
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
相关资源
最近更新 更多