X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Нужна помощь в JQuery, срочно ((
McSender
McSender
Topic Starter сообщение 28.2.2013, 15:53; Ответить: McSender
Сообщение #1


Есть скрипт формы обратной связи, суть в том, что она отправляется аяксом.

В рамках одного домена - всё работает. Но, если обработчик положить на другой и сослаться на него, то аякс матюгается!

Кто знает, в чём может быть дело ?

Домен 1 - Форма (Реально на t1.siteonica.ru)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Регистрация пользователя</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">

         function AjaxFormRequest(result_id,form_id,url) {
            jQuery.ajax({
                    url:     url, //Адрес подгружаемой страницы
                    type:     "POST", //Тип запроса
                    dataType: "html", //Тип данных
                    data: jQuery("#"+form_id).serialize(),  
                    success: function(response) { //Если все нормально
                    document.getElementById(result_id).innerHTML = response;
                },
                error: function(response) { //Если ошибка
                document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
                }
             });
        }
   </script>
    </head>
    <body>
        <div style="border: 1px solid red; width: 220px; height: 80px; padding: 10px;" id="result_div_id">
            Смотрим результат<br/>
        </div>
        <br/><br/>
        <form method="post" action="" id="form_id">
            Имя: <input type="text" name="name" value="Тестер" /><br/>
            Телефон: <input type="text" name="phone" value="8 800 555 7788" /><br/>
            Сайт: <input type="text" name="site" value="http://yandex.ru/" /><br/>
            <input type="button" value="Отправить" onclick="AjaxFormRequest('result_div_id', 'form_id', 'http://t2.siteonica.ru/form.php')" />
        </form>
    </body>
</html>



Домен 2 - Обработчик (Реально на t2.siteonica.ru)

<?
if (isset($_POST["name"])) {
    echo "Ваше имя: " . $_POST["name"] . "<br/>";     
    echo "Ваш телефон: " . $_POST["phone"] . "<br/>";
    echo "Ваш сайт: " . $_POST["site"] . "<br/>";

}

?>


Если же обработчик лежит тут же, то всё работает, пример t3.siteonica.ru

Помогите, плиз ... очень надо !

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

ТЗ пришлю в формате DOC ... там всё просто (тем кто знает AJAX)


--------------------
Раздаём подарки всем за покупку 1С-Битрикс!

Вы посредник? Тогда подарки Ваши !
1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Archil
Archil
сообщение 28.2.2013, 16:21; Ответить: Archil
Сообщение #2


Потому что, если вы хотите отослать запрос на другой домен - то это межсайтовый скриптинг, почитайте про JSONP.


--------------------
CrowdLinks.ru - крауд-маркетинг для вас. Отзывы на мауле.
Работаю за Вас в Gogetlinks - быстро и качественно, стабильный заработок без напряга.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
McSender
McSender
Topic Starter сообщение 28.2.2013, 16:35; Ответить: McSender
Сообщение #3


Всё читал .. весь день сижу, не получается .... поэтому и прошу помощи ((

голова уже пухнет ...


--------------------
Раздаём подарки всем за покупку 1С-Битрикс!

Вы посредник? Тогда подарки Ваши !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Archil
Archil
сообщение 28.2.2013, 17:05; Ответить: Archil
Сообщение #4


Джейквери похож на это:
        var data = 'firstname=antonio';
        var domain = 'http://domain.com';

$.ajax({
            url:domain + '/jsonp.php?callback=?',
            dataType:'jsonp',
            data:data,
            crossDomain:true
        });


PHP код должен быть похож на это:

<?php
if (isset($_GET['callback'])) {
        $output = $_GET['callback'];
        echo $_GET['callback'] . '(' . json_encode($output) . ')';
}


Тут главное вернуть ответ именно вот так "echo $_GET['callback'] . '(' . json_encode($output) . ')';"

Этот код не защищенный.

Сообщение отредактировал Archil - 28.2.2013, 17:07


--------------------
CrowdLinks.ru - крауд-маркетинг для вас. Отзывы на мауле.
Работаю за Вас в Gogetlinks - быстро и качественно, стабильный заработок без напряга.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
McSender
McSender
Topic Starter сообщение 28.2.2013, 18:05; Ответить: McSender
Сообщение #5


пипец ... буду пробовать но незащищенность и _GET смущают


--------------------
Раздаём подарки всем за покупку 1С-Битрикс!

Вы посредник? Тогда подарки Ваши !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Archil
Archil
сообщение 28.2.2013, 19:38; Ответить: Archil
Сообщение #6


GET вас никак не может смущать, потому что так работает эта технология, а вот с защитой надо немного подумать. Защищать вам надо будет только сервер.


--------------------
CrowdLinks.ru - крауд-маркетинг для вас. Отзывы на мауле.
Работаю за Вас в Gogetlinks - быстро и качественно, стабильный заработок без напряга.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Pepper
Pepper
сообщение 28.2.2013, 20:35; Ответить: Pepper
Сообщение #7


Не совсем ответ на вопрос, но все же скажу.

Если уж так приспичило на разных доменах делать, то что мешает сделать PHP файл на домене t1, который будет редиректить запросы на домен t2 через cURL, например?

Я по максимуму стараюсь избегать XSS, т.к. никогда не стоит полагаться на клиента (браузер, действия юзера).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
McSender
McSender
Topic Starter сообщение 28.2.2013, 20:39; Ответить: McSender
Сообщение #8


Pepper, не знаю cURL ((

может кто-то за денюжку сделает ? А то уже всё .. упёрся


--------------------
Раздаём подарки всем за покупку 1С-Битрикс!

Вы посредник? Тогда подарки Ваши !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rjksdfhe
rjksdfhe
сообщение 28.2.2013, 20:42; Ответить: rjksdfhe
Сообщение #9


Видел тему днём, думал, что кто-то что-то простое напишет.

Кроссбрауерный ajax запрещён политикой безопасности браузеров. И проблема не в коде, только кодом это не решается, а в том, как это можно обойти. Но при этом, чтобы пройти политику безопасности, у вас должен быть полный доступ на обоих доменах.

1.

Самое простое и наименее геморойное - на t1.siteonica.ru создаёте php-proxy.
То есть php-файл. Он собирает POST и уже сам направляет CURL-post запрос на t2.siteonica.ru.

1.1 То есть на t1.siteonica.ru есть файл proxy.php (не закрытый через htaccess)
1.2 Меняете в коде
<input type="button" value="Отправить" onclick="AjaxFormRequest('result_div_id', 'form_id', 'http://t2.siteonica.ru/form.php')" />

url на локальный (можно оставить абсолютный `http://`, но домен должен быть именно тот же, т.е. `http://t1.siteonica.ru/proxy.php`).
1.3 В proxy.php получаете всё через POST, и через него же отправляете запрос на `http://t2.siteonica.ru/form.php`
Примерно так:
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_URL, "http://t2.siteonica.ru/form.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{ЗДЕСЬ ВСЕ POST-ДАННЫЕ}");
$html=curl_exec($ch);
curl_close($ch);


2. Есть и другие варианты, с iframe и window.addEventListener ("message", listener, false);, но это сложнее.


Пусть кто-то сделает лучше, проблема не простая, но решаемая.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
McSender
McSender
Topic Starter сообщение 28.2.2013, 23:36; Ответить: McSender
Сообщение #10


rjksdfhe, огромное спасибо что уделил мне время ! завтра с утра буду пробовать !


--------------------
Раздаём подарки всем за покупку 1С-Битрикс!

Вы посредник? Тогда подарки Ваши !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна ли плоская структура категорий в ИМ?
1 noviktamw 1073 26.3.2024, 21:50
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
12 Tia2 1538 25.3.2024, 6:54
автор: Skyworker
Открытая тема (нет новых ответов) требуется помощь с themasoftware (Темапостером)
0 Taylor 568 16.3.2024, 18:41
автор: Taylor
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСостояние после ампутации - нужна помощь
благотворительный топик
46 vitvirtual 5561 12.3.2024, 21:52
автор: Гиппопотам
Открытая тема (нет новых ответов) Нужна рассылка по емаил базе сео-студий
0 kasey7 622 2.3.2024, 23:13
автор: kasey7


 



RSS Текстовая версия Сейчас: 29.3.2024, 19:20
Дизайн