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



 

Здравствуйте, гость ( Вход | Регистрация )

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


Участник
***

Группа: User
Сообщений: 196
Регистрация: 10.3.2011
Поблагодарили: 29 раз
Репутация:   3  


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

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

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

Домен 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


Завсегдатай
*****


Группа: Active User
Сообщений: 645
Регистрация: 13.1.2010
Из: Харьков
Поблагодарили: 79 раз
Репутация:   26  


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


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


Участник
***

Группа: User
Сообщений: 196
Регистрация: 10.3.2011
Поблагодарили: 29 раз
Репутация:   3  


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

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


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

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


Завсегдатай
*****


Группа: Active User
Сообщений: 645
Регистрация: 13.1.2010
Из: Харьков
Поблагодарили: 79 раз
Репутация:   26  


Джейквери похож на это:
        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


Участник
***

Группа: User
Сообщений: 196
Регистрация: 10.3.2011
Поблагодарили: 29 раз
Репутация:   3  


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


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

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


Завсегдатай
*****


Группа: Active User
Сообщений: 645
Регистрация: 13.1.2010
Из: Харьков
Поблагодарили: 79 раз
Репутация:   26  


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


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


Бывалый
****

Группа: User
Сообщений: 393
Регистрация: 14.1.2011
Поблагодарили: 123 раза
Репутация:   31  


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

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

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


Участник
***

Группа: User
Сообщений: 196
Регистрация: 10.3.2011
Поблагодарили: 29 раз
Репутация:   3  


Pepper, не знаю cURL ((

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


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

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


Straight arms
*******

Группа: Active User
Сообщений: 2760
Регистрация: 21.4.2009
Из: Мытищи, МО, РФ
Поблагодарили: 1111 раз
Репутация:   163  


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

Кроссбрауерный 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


Участник
***

Группа: User
Сообщений: 196
Регистрация: 10.3.2011
Поблагодарили: 29 раз
Репутация:   3  


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


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

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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Безвозмездная помощь в социальных сетях
Инвайты, посты, репосты, лайки и тп
9 PostBrigada 2286 Вчера, 15:47
автор: WildWeb8
Открытая тема (нет новых ответов) Нужна помощь в активации аккаунта AdSense
10 dimaguru 2592 15.12.2017, 11:12
автор: Ley
Открытая тема (нет новых ответов) Недорогие услуги - php/js/mysql/jquery/bootstrap
2 vlads 657 13.12.2017, 21:01
автор: vlads
Открытая тема (нет новых ответов) Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
18 qpPeW 3466 12.12.2017, 13:32
автор: qpPeW
Открытая тема (нет новых ответов) Очень нужна работа
Желательно на постоянной основе
11 Yuliya_Klim 1728 11.12.2017, 19:26
автор: beliaev


 



RSS Текстовая версия Сейчас: 17.12.2017, 3:17
Дизайн