Помогите с JSONp и PHP

12
Neptoon
На сайте с 12.07.2011
Offline
126
1137

Есть домен 1, на котором будут file.js и file.php

На доменах 2 и 3 будет подгружаться файл file.js с домена 1. file.js должен отправить любой запрос в file.php. file.php должен определить домен, с которого пришел запрос, и в соответствии с заданным условием вывести нужный рекламный код.

Просьба помочь с кодом.

Drive your way
bay_ebook
На сайте с 28.05.2010
Offline
111
#1


var domen = document.location.href;

А дальше отправляем запрос, на jquery примерно так (на js голом лень писать):


$.ajax({
url: 'http://site.ru/',
type: "POST",
dataType : "json",
cache: false,
data: ({domen:domen, date1:date1, date2:date2}),
success: function (data){
// Вывод инфы
}
});

ну и на стороне пыха


$domen = $_POST['domen'];
if($domen == 'domen1'){
// гоняем :)
}
Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
Neptoon
На сайте с 12.07.2011
Offline
126
#2
bay_ebook:

var domen = document.location.href;


А дальше отправляем запрос, на jquery примерно так (на js голом лень писать):

$.ajax({
url: 'http://site.ru/',
type: "POST",
dataType : "json",
cache: false,
data: ({domen:domen, date1:date1, date2:date2}),
success: function (data){
// Вывод инфы
}
});


ну и на стороне пыха

$domen = $_POST['domen'];
if($domen == 'domen1'){
// гоняем :)
}

А через http_referer получится определить? Домены 2 и 3 - зеркала и подключаемый код у них должен быть одинаковым

bay_ebook
На сайте с 28.05.2010
Offline
111
#3
Neptoon:
А через http_referer получится определить? Домены 2 и 3 - зеркала и подключаемый код у них должен быть одинаковым

собственно - а почему тот код, что я дал, должен как-то отличаться?

var domen = document.location.href;

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

dkameleon
На сайте с 09.12.2005
Offline
386
#4
bay_ebook:
А дальше отправляем запрос, на jquery примерно так (на js голом лень писать):

кроссдоменно уже по дефолту работает? :)

Дизайн интерьера (http://balabukha.com/)
bay_ebook
На сайте с 28.05.2010
Offline
111
#5
dkameleon:
кроссдоменно уже по дефолту работает? :)

причем тут кроссдоменность, если там js тянется оттуда, куда же и будет идти ajax? Это если бы js и php серверы отличались - пришлось бы кроссдоменность мучатся :)

Neptoon
На сайте с 12.07.2011
Offline
126
#6

Не пойму, что делаю не так.

На первом домене лежат 2 файла

file.js

var domen = document.location.href;

$.ajax({
url: 'http://domain1.ru/file.php',
type: "POST",
dataType : "json",
cache: false,
data: ({domen:domen, date1:date1, date2:date2}),
success: function (data){

}
});

file.php

<?php
$domen = $_POST['domen'];
echo $domen;
?>

На втором домене

<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script src="http://domain1.ru/file.js" type="text/javascript"></script>
</head>
<body>
123
</body>
</html>

Ну и ничего не происходит...😕

bay_ebook
На сайте с 28.05.2010
Offline
111
#7
Neptoon:


Ну и ничего не происходит...😕

Для того, что бы что-то происходило нужно создать какое-то событие. Например создать функцию, которая отработает по клику на элемент, или после загрузки страницы и тд. Само по себе никогда и ничего не случается.

dkameleon
На сайте с 09.12.2005
Offline
386
#8
bay_ebook:
причем тут кроссдоменность, если там js тянется оттуда, куда же и будет идти ajax? Это если бы js и php серверы отличались - пришлось бы кроссдоменность мучатся

ну тянется и тянется :) выполняется то он все равно в контексте домена document.location.hostname :)

bay_ebook:
Для того, что бы что-то происходило нужно создать какое-то событие. Например создать функцию, которая отработает по клику на элемент, или после загрузки страницы и тд. Само по себе никогда и ничего не случается.

да все там норм, всё случится. эмбеднутые скрипты вызываются автоматически.

вставьте алерт перед аяксом и убедитесь ;)

как ни крути, а с кроссдоменами париться надо :)

IL
На сайте с 20.04.2007
Offline
435
#9
dkameleon:
как ни крути, а с кроссдоменами париться надо

Ну, как париться... Средствами JQuery: в ajax-вызове


$.ajax({
...,
dataType: "jsonp",
crossDomain:true,
type:'GET',
...
success:function(data){
alert (data.server_domain + ' | '.data.form_domain);
}

На стороне сервера

<?php
$reuslt = array('server_domain'=>$_SERVER['HTTP_HOST'], 'form_domain'=>$_GET['domen']);
$result = json_encode($result);
echo $_GET['callback'] . "($result)";exit;

Да, не без нюансов.

Есть и более "специализированные решения" http://habrahabr.ru/post/120336/ http://www.ajax-cross-domain.com/

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
bay_ebook
На сайте с 28.05.2010
Offline
111
#10
dkameleon:
ну тянется и тянется :) выполняется то он все равно в контексте домена document.location.hostname :)

Нет, не нужно кроссдоменности. Просто в том коде, что привел ТС - ничего не работает. Если написать норм события, ну хотя бы норм параметры - все отработает. Я ведь не с головы пишу. Если настолько интересно - могу демку поднять попозже. Недавно писал проверку состояния заказа .которое можно таким же методом как у ТС вставлять на любой сайт и там на ajax идет запрос на базовый сервер и отдаются данные.

Во, не поленился

_stop-mat.net_ (код можно и в любой свой сайт вставить)

Собственно, сайм js http://php-shaman.com/js/fortest.js

пхп код


<?php
header("Access-Control-Allow-Origin: *");

echo json_encode($_POST);

Работает прекрасно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий