Ajax-запросы в букмарклетах - PullRequest
0 голосов
/ 25 февраля 2012

Я хочу создать букмарклет, который позволит мне отправлять URL текущей страницы, на которой я нахожусь, в php-файл, получать ответ с подтверждением и отображать его для пользователя.

Я попробовал несколько вещей, и работал только один метод, он успешно отправил запрос, но ответ не отображался.

javascript: (function (e, a, g, h, f, c, b, d) {
    if (!(f = e.jQuery) || g > f.fn.jquery || h(f)) {
        c = a.createElement("script");
        c.type = "text/javascript";
        c.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + g + "/jquery.min.js";
        c.onload = c.onreadystatechange = function () {
            if (!b && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
                h((f = e.jQuery).noConflict(1), b = 1);
                f(c).remove()
            }
        };
        a.documentElement.childNodes[0].appendChild(c)
    }
})(window, document, "1.3.2", function ($, L) {
    $.get("http://mysite.com/recommend.php", {
        url: encodeURIComponent(document.URL)
    }, function (data) {
        if (data.error) {
            alert('Looks like someone else added this site just before you did, Thank you though!');
        } else {
            alert(document.URL + ' successfully added!');
        }
    }, 'json');
});

Можно ли как-нибудь заставить это работать?Я где-то читал о политике происхождения - есть ли другой способ добиться того, что я пытаюсь сделать - Цель - создать букмарклет, связаться с сервером и отобразить ответ.

1 Ответ

4 голосов
/ 25 февраля 2012

Вы не можете использовать стандартный кросс-домен Ajax.Браузеры применяют политику «тот же домен».Вы должны использовать JSONP.http://en.wikipedia.org/wiki/JSONP

Найдите на этой странице «jsonp», чтобы начать использовать jQuery с JSONP: http://api.jquery.com/jQuery.ajax/

Более простое решение может быть следующим:

var recURL='http://mysite/com/recommend.php?url=' 
  + encodeURIComponent(document.URL);
document.body.appendChild(document.createElement('script')).src=recURL;

require.php должен возвращать код Javascript, например: alert(document.URL + ' successfully added!');

...