iOS Safari - 无法从null发出任何请求

时间:2012-02-08 21:27:23

标签: jquery ios ajax safari

在尝试让iOS 5上的Safari通过jQuery加载AJAX请求时,调试控制台会加载错误

Javascript: Error on Line 1
XMLHttpRequest cannot load http://<MYSERVERADDRESS>/WebMethods.asmx/Method. Cannot make any requests from null

我已经尝试了谷歌的答案,以及搜索SO,但我无法找到解决方案。

此问题仅出现在iOS上。

非常感谢任何帮助。

修改

以下是所要求的代码。

jQuery(function ($) {
                        $.ajax({
                            url: "/Peak.asmx/IsValidParticipant",
                            data: { LanID: $("#LoginPageUsername").val(), Password: $("#loginPagePassword").val() },
                            type: "POST",
                            success: function (data) {
                                if (data.response.result == "Success") {
                                    window.location = "/RSVP.aspx";
                                } else if (data.response.result == "Failure") {
                                    $(".errorsSummaryBox").show().find("li").hide();
                                    if (data.response.data.Reason == "Credentials") {
                                        $("#PortalAuthError").slideDown();
                                    } else if (data.response.data.Reason == "Participant") {
                                        window.location = "/NoInvite.aspx";
                                    }
                                }
                            },
                            dataType: "json"
                        });
                    });

3 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,但我找到了解决方案!

您必须重新启动Safari进程。不仅退出主窗口,而且:

  • 退出Safari
  • 双击退出按钮以显示活动进程
  • 抓住Safari
  • 点击减号
  • 重新启动safari

奇怪但真实。

答案 1 :(得分:3)

致TFerrell:

RSVP.aspx响应是否包含PDF?如果是,那么尝试将我的建议用于下面的Parched。

To Parched:

您尝试打开的PDF将破坏新Safari Mobile 5的默认PDF查看器。快速解决方案是弹出PDF的新窗口。这将打破新的弹出页面而不是父页面。另一种解决方案是以格式良好的PDF格式生成(如果您)PDF。

答案 2 :(得分:1)

如果这没有帮助/纠正,请删除答案...我没有足够的声誉来添加评论,这只是猜测,但我今天遇到了类似的问题:

我试图获得一个运行jquerymobile的东西,其中我有一个ajax请求。要调试我切换到桌面chrome,它总是会在控制台中给我一个错误: “XMLHttpRequest无法加载[url] .Access-Control-Allow-Origin不允许使用Origin。”

原因是因为我从某个不同域的file:///some.html加载了ajax。因此,这是一个跨站点问题。

我用Google搜索并找到了file:// sites(例如,如果您在移动设备上使用手机屏幕制作的网站)确实原点为null并且该问题似乎很难。

无论如何,我相信这可能会对你有所帮助。您可能需要将服务器配置为允许跨域请求。

有关详细信息,请参阅此问题 XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

请参阅本指南以获取更多帮助 http://usejquery.com/posts/the-jquery-cross-domain-ajax-guide

我个人没有尝试深入解决这个问题,因为它适用于我的android模拟器...... (我试图在jquery-ajax上设置“crossDomain”和“xhrFields”属性无效)

欢呼声