Почему запрос Gquery GET не возвращает данных? - PullRequest
0 голосов
/ 15 октября 2011
$.get("http://localhost/code.php", function(data){
alert(data);
});

code.php:

<?php
echo "hello!";
?>

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

Я запускаю сценарии на сервере IIS.

[EDIT]

Я забыл добавить важную деталь, я вызываю скрипт php из скрипта greasemonkey. Я попробовал это на сервере, и это работает. Но мне это нужно для жировых обезьян.

Ответы [ 3 ]

1 голос
/ 16 октября 2011

Если вы вызываете методы с удаленной страницы через GreaseMonkey, необходимо добавить , the prefix unsafeWindow`:

unsafeWindow.$.get("http://localhost/code.php", function(data){
    alert(data);
});

Если вам не нужны специфичные для JQuery методы, я рекомендую использовать GM_xmlhttpRequest:

GM_xmlhttpRequest({
    "method": "get",
    "url": "http://localhost/code.php",
    "onload": function(data){
        alert(data);
    }
})
0 голосов
/ 16 октября 2011

Ну, в конце концов я отказался от greasemonkey, так как он не будет работать, что бы я ни пытался.Таким образом, я получил скрипт и, если повезет, код, который мне был нужен, был на расстоянии одного клика от страницы аддона.Так что вот, если кому-то еще это нужно:

var ret = GM_xmlhttpRequest({
  method: "GET",
  url: "http://localhost/code.php",
  onload: function(res) {
    alert(res.responseText);
  }
});

Это работает сразу по-скриптовски, больше не нужно ничего включать.

0 голосов
/ 16 октября 2011

Судя по этому сообщению в блоге , Greasemonkey не предлагает объект XHR, используемый jQuery, поэтому вам нужно обернуть то, что он предлагает, и настроить JQuery AJAX с пользовательской реализацией.

Я приведу здесь соответствующий код:

// Wrapper for GM_xmlhttpRequest
function GM_XHR() {
    this.type = null;
    this.url = null;
    this.async = null;
    this.username = null;
    this.password = null;
    this.status = null;
    this.headers = {};
    this.readyState = null;

    this.open = function(type, url, async, username, password) {
        this.type = type ? type : null;
        this.url = url ? url : null;
        this.async = async ? async : null;
        this.username = username ? username : null;
        this.password = password ? password : null;
        this.readyState = 1;
    };

    this.setRequestHeader = function(name, value) {
        this.headers[name] = value;
    };

    this.abort = function() {
        this.readyState = 0;
    };

    this.getResponseHeader = function(name) {
        return this.headers[name];
    };

    this.send = function(data) {
        this.data = data;
        var that = this;
        GM_xmlhttpRequest({
            method: this.type,
            url: this.url,
            headers: this.headers,
            data: this.data,
            onload: function(rsp) {
                // Populate wrapper object with returned data
                for (k in rsp) {
                    that[k] = rsp[k];
                }
            },
            onerror: function(rsp) {
                for (k in rsp) {
                    that[k] = rsp[k];
                }
            },
            onreadystatechange: function(rsp) {
                for (k in rsp) {
                    that[k] = rsp[k];
                }
            }
        });
    };
};

И для настройки AJAX в jQuery:

$.ajaxSetup({
    xhr: function(){return new GM_XHR;}
});

После этого шага .get() и другие методы AJAX должны работать нормально.

...