Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.04.2014, 19:20
Новичок на форуме
Отправить личное сообщение для XRASER Посмотреть профиль Найти все сообщения от XRASER
 
Регистрация: 10.04.2014
Сообщений: 6

Tampermonkey и GET\POST запрос с выводом ответа
Необходимо кинуть запрос на php файл (GET или POST, без разницы) с переменной "sid=demo" и вывести ответ alert'ом.

Пример, который нашел здесь, почему-то у меня не работает.

Код:
// ==UserScript==
// @id test
// @name Test
// @namespace test
// @match [url]http://en.wikipedia.org/*[/url]
// ==/UserScript==

var GM_xmlhttpRequest = function (params) {
    var req = new XMLHttpRequest();
    
    req.open(params.method, params.url);
    
    for (var header in params.headers) {
        req.setRequestHeader(header, params.headers[header]);
    }
    
    req.onreadystatechange = function () {
        if (req.readyState == 4 && req.status == 200) {
            params.onload(req);
        }
    };
    
    req.send(params.data);
};

var query = {
    method: "POST",
    url: "https://en.wikipedia.org/w/api.php",
    onload: function (res) {
        alert(res.responseText);
    },
};

query.data = "action=query&meta=siteinfo&format=json";
query.headers = {"Content-type": "application/x-www-form-urlencoded"};

GM_xmlhttpRequest(query);
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2014, 19:08
Новичок на форуме
Отправить личное сообщение для XRASER Посмотреть профиль Найти все сообщения от XRASER
 
Регистрация: 10.04.2014
Сообщений: 6

Вот так работает:

jQuery.ajax = (function(_ajax) {

    var protocol = location.protocol,
        hostname = location.hostname,
        exRegex = RegExp(protocol + '//' + hostname),
        YQL = 'http' + (/^https/.test(protocol) ? 's' : '') + '://query.yahooapis.com/v1/public/yql?callback=?',
        query = 'select * from html where url="{URL}" and xpath="*"';

    function isExternal(url) {
        return !exRegex.test(url) && /:\/\//.test(url);
    }

    return function(o) {

        var url = o.url;

        if (/get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url)) {

            // Manipulate options so that JSONP-x request is made to YQL

            o.url = YQL;
            o.dataType = 'json';

            o.data = {
                q: query.replace(
                    '{URL}',
                    url + (o.data ?
                        (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data) : '')
                ),
                format: 'xml'
            };

            // Since it's a JSONP request
            // complete === success
            if (!o.success && o.complete) {
                o.success = o.complete;
                delete o.complete;
            }

            o.success = (function(_success) {
                return function(data) {

                    if (_success) {
                        // Fake XHR callback.
                        _success.call(this, {
                            responseText: data.results[0]
                            // YQL screws with <script>s
                            // Get rid of them
                            .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
                        }, 'success');
                    }

                };
            })(o.success);

        }

        return _ajax.apply(this, arguments);

    };

})(jQuery.ajax);

$.ajax({
            url: 'http://wotbonuscode.tk/getcode.php',
            type: 'GET',
            success: function(res) {
                alert(res.responseText);
            }
        });


Но возвращает:

Код:
<html>
  <head>
    <meta content="HTML Tidy for Java (vers. 26 Sep 2004), see www.w3.org" name="generator"/>
    <title/>
  </head>
  <body>
    <p>TESTCODE</p>
  </body>
</html>
А мне нужно просто "TESTCODE", как это сделать?
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2014, 19:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Возвращать только TESTCODE.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2014, 20:37
Новичок на форуме
Отправить личное сообщение для XRASER Посмотреть профиль Найти все сообщения от XRASER
 
Регистрация: 10.04.2014
Сообщений: 6

Так:

$.ajax(
{
	url: 'http://wotbonuscode.tk/getcode.php',
	type: 'GET',
	dataType: 'html',
	success: function(res)
   	{
	alert(res.responseText);
	}
});


Или так:
$.get( "http://wotbonuscode.tk/getcode.php", function( data ) {
  alert( "data );
});


Запрос отправляется, а ответ не выводит.

Последний раз редактировалось XRASER, 12.04.2014 в 22:20.
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2014, 03:31
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от XRASER Посмотреть сообщение
Так:
$.ajax(
{
	url: 'http://wotbonuscode.tk/getcode.php',
	type: 'GET',
	dataType: 'html',
	success: function(res)
   	{
	alert(res.responseText);
	}
});
Заменить res.responseText на res.
Запрос отправляется с того же домена, где и лежит php скрипт?
Ответить с цитированием
  #6 (permalink)  
Старый 16.04.2014, 14:10
Интересующийся
Отправить личное сообщение для Ilya_Nsk Посмотреть профиль Найти все сообщения от Ilya_Nsk
 
Регистрация: 07.02.2014
Сообщений: 11

кроссдоменные запросы режутся броузером, если сервер не говорит что можно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 10:04