Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составление кросс-доменных запросов на Ajax 
:(
    Опции темы
Nechto
  Дата 14.3.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 31.5.2009

Репутация: нет
Всего: нет



Добро пожаловать.

Я пишу баннерную систему. И по ходу я столкнулся с безопасностью запросов выполняемых Ajax на внешнее доменые имена.

Вот что у меня получилось. Тег SCRIPT с параметрами вызова (src = 'http://domen.ru/banner/script.js') я создал, в теге HEAD. 
Что делать дальше? Подскажите пожалуйста  smile 
Код

<html>
<head></head>
<body>
<script type='text/javascript'>

...

// Проверка наличия тега HEAD если его нет то создать его
var head_count = document.getElementsByTagName('head').length;
var body_count = document.getElementsByTagName('body').length;
if (head_count != 1){
     if (body_count != 0){
         var head = create('head');
         before(first(tag('body')[0]), head);
        }        
    }
    
//alert('До : '+head_count+'-'+body_count+' После : '+document.getElementsByTagName('head').length);            

// Создания динамического тера SCRIPT
var sct_count = document.getElementsByTagName('script').length;
var spt = create('script');
script.src = 'http://domen.ru/banner/script.js';
spt.type = 'text/javascript';
append(tag('head')[0], spt);

//alert('До :'+sct_count+' После : '+document.getElementsByTagName('script').length);    
</script>
</body>
</html> 

PM MAIL   Вверх
bars80080
Дата 14.3.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



только это никакой не аякс. почитайте про json. у вас в подгружаемом файле http:/ /domen.ru/banner/script.js должен находится объект с данными
PM MAIL WWW   Вверх
Nechto
Дата 14.3.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 31.5.2009

Репутация: нет
Всего: нет




Это весь скрипт.  Эти данные должны находиться?


скрипт  клиентской "domen_1.ru" части index.html
Код

<html>
<head></head>
<body>
<script type='text/javascript'>

...

// Проверка наличия тега HEAD если его нет то создать его
var head_count = document.getElementsByTagName('head').length;
var body_count = document.getElementsByTagName('body').length;
if (head_count != 1){
     if (body_count != 0){
         var head = create('head');
         before(first(tag('body')[0]), head);
        }        
    }
    
//alert('До : '+head_count+'-'+body_count+' После : '+document.getElementsByTagName('head').length);            

// Создания динамического тера SCRIPT
var sct_count = document.getElementsByTagName('script').length;
var spt = create('script');
script.src = 'http://domen.ru/banner/script.js';
spt.type = 'text/javascript';
append(tag('head')[0], spt);

//alert('До :'+sct_count+' После : '+document.getElementsByTagName('script').length);    
</script>
</body>
</html> 
 

скрипт на серверной "domen_2.ru" части script.js
Код

switch(window.navigator.appName){
    case 'Opera': showContent('http://domen_2.ru/showlink.php');break;
    case 'Microsoft Internet Explorer': showContent('http://domen_2.ru/showlink.php');break;
    case 'Netscape': showContent('http://domen_2.ru/showlink.php');break;
    }
function showContent(link) {   
    var http = createRequestObject();   
        if(http){   
             http.open('get', link);   
             http.onreadystatechange = function(){   
                //http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
                if(http.readyState == 4){   
                    document.write(http.responseText);
                    }   
                }   
             http.send(null);       
            }else{ 
                 document.write('Error'); 
                }   
    }
function createRequestObject(){   
    try {return new XMLHttpRequest()}catch(e)    
        {try { return new ActiveXObject('Msxml2.XMLHTTP')}catch(e)    
            {try { return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return null;}   
            }   
        }   
    }



Цитата

почитайте про json

Я читал и нашёл немного материала. Только он я так понял работает через библиатеку jquery
Код

$.getJSON("http://www.wp25.l/jsondata.php?callback=?",
    function(data) {
        alert(data.myval);
    });

Код

<?php
$callback = $_GET['callback'];
echo $callback.'('."{'myval':'1234567890'}".')';
?>


Ещё нашёл скрипт на чистом Ajax. Но только не разобрался какое значение несёр переменая myCallback
Код

//----------------------------------    
function sendScriptRequest(url, httpParams, callback, callbackArgsArray){
    var currentScript = document.createElement("script");
     currentScript.ajax_readyState = false;
     currentScript.onload = scriptCallback(currentScript, callback, callbackArgsArray);// ?
     currentScript.onreadystatechange = scriptCallback(currentScript, callback, callbackArgsArray);
     currentScript.src = url;
     document.getElementsByTagName("script")[0].parentNode.appendChild(currentScript);
    }

function scriptCallback(currentScript, callback, callbackArgsArray){
    return function() {
        if (currentScript.ajax_readyState)
        return;
         if (! currentScript.readyState || currentScript.readyState == "loaded" || currentScript.readyState == "complete"){
             currentScript.ajax_readyState = true;
             callback.apply(currentScript, callbackArgsArray)
             currentScript.parentNode.removeChild(currentScript);
            }
        }
    }    
//----------------------------------    
    
    
    
window.onload = function () {    
var 
sendScriptRequest("http://znaniy.ru", "a=1&b=2", myCallback, ["test123"]);
};





PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.