Проблема с примером AJAX на W3schools - PullRequest
2 голосов
/ 22 марта 2011

Ссылка на пример.

Я заменил URL-адрес «ajax_info.txt» на URL-адрес веб-сайта (http: // ...), который отвечает некоторым текстом.Полученный код работает в IE 8.

  1. Почему код не работает для Chrome (без responseText)?

  2. Какое решение (без использования какой-либо библиотеки)?

Спасибо за ваше время.

PS: Я очень новичок в веб-разработке.

Ответы [ 4 ]

2 голосов
/ 22 марта 2011

Браузеры имеют ограничение безопасности, которое называется «та же политика происхождения». Он не позволяет случайным веб-сайтам отправлять запросы от вашего имени с использованием вашей идентификационной информации, хранящейся в браузере с помощью файлов cookie или localStorage. Например, если w3schools.com может сделать запрос AJAX на facebook.com, он может узнать, где вы живете или кто ваши друзья, если у вас есть эта информация на Facebook. Браузеры предотвращают такого рода запросы, разрешая только AJAX-запросам отправлять запросы к домену, порту и протоколу (например, http или https), с которого произошел документ.

Дополнительная информация:

http://en.wikipedia.org/wiki/Same_origin_policy

Вот почему ваш запрос не работал в Chrome, если вы поместили URL-адрес какого-то случайного сайта вместо текстового файла. Я не уверен, почему это сработало бы для IE 8. Я сомневаюсь, что это будет.

0 голосов
/ 22 августа 2014
(function(c, I, B) {
        c.fn.responsiveSlides = function(l) {
                var a = c.extend({
                    auto: !0,
                    speed: 500,
                    timeout: 4E3,
                    pager: !1,
                    nav: !1,
                    random: !1,
                    pause: !1,
                    pauseControls: !0,
                    prevText: "Previous",
                    nextText: "Next",
                    maxwidth: "",
                    navContainer: "",
                    manualControls: "",
                    namespace: "rslides",
                    before: c.noop,
                    after: c.noop
                }, l);
                return this.each(function() {
                    B++;
                    var f = c(this),
                        s, r, t, m, p, q, n = 0,
                        e = f.children(),
                        C = e.size(),
                        h = parseFloat(a.speed),
                        D = parseFloat(a.timeout),
                        u = parseFloat(a.maxwidth),
                        g = a.namespace,
                        d = g + B,
                        E = g + "_nav " + d + "_nav",
                        v = g + "_here",
                        j = d + "_on",
                        w = d + "_s",
                        k = c(""),
                        x = {
                            "float": "left",
                            position: "relative",
                            opacity: 1,
                            zIndex: 2,
                        },
                        y = {
                            "float": "none",
                            position: "absolute",
                            opacity: 0,
                            zIndex: 1
                        },
                        F = function() {
                            var b = (document.body || document.documentElement).style,
                                a = "transition";
                            if ("string" === typeof b[a]) return !0;
                            s = ["Moz", "Webkit", "Khtml", "O", "ms"];
                            var a = a.charAt(0).toUpperCase() + a.substr(1),
                                c;
                            for (c = 0; c "+a+"
                                "});k.append(A);l.navContainer?c(a.navContainer).append(k):f.after(k)}a.manualControls&&(k=c(a.manualControls),k.addClass(g+"
                                _tabs "+d+"
                                _tabs "));(a.pager||a.manualControls)&&k.find("
                                li ").each(function(a){c(this).addClass(w+(a+1))});if(a.pager||a.manualControls)q= k.find("
                                a "),r=function(a){q.closest("
                                li ").removeClass(v).eq(a).addClass(v)};a.auto&&(t=function(){p=setInterval(function(){e.stop(!0,!0);var b=n+1" + a.prevText + "" + a.nextText + ""; l.navContainer ? c(a.navContainer).append(g) : f.after(g);
                                var d = c("." + d + "_nav"), G = d.filter(".prev"); d.bind("click", function(b) {
                                        b.preventDefault();
                                        b = c("." + j);
                                        if (!b.queue("fx").length) {
                                            var d = e.index(b);
                                            b = d - 1;
                                            d = d + 1u && f.css("width", u)
                                        };
                                        H();
                                        c(I).bind("resize", function() {
                                            H()
                                        })
                                    }
                                })
                        }
                })(jQuery, this, 0);
0 голосов
/ 22 марта 2011

Использование JQuery сделает ваш код намного проще в управлении, поэтому сделайте это.Если вы действительно не хотите использовать библиотеку, взгляните на этот www.w3.org / TR / XMLHttpRequeste

Тогда о коде по предоставленной вами ссылке.Я могу выполнить его без каких-либо ошибок в Chrome.У запроса ajax в вашем браузере Chrome не возникло никаких ошибок.Попробуйте использовать Chrome Developer Tools , здесь вы увидите статус ответа, отправленного сервером.Также вы можете увидеть, есть ли ошибка в вашем коде js.

0 голосов
/ 22 марта 2011

Если вы новичок и хотите избежать большинства кросс-JavaScript-проблем, перейдите на jQquery

что облегчает и имеет меньше проблем, когда нет браузера

для вашей текущей проблемы вы можете перейти на jQuery. Ajax () метод решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...