2013-10-03 4 views
2

Я что-то работаю над этим.Передать поддоменную форму ajax submit с сеансом

Javascript

$('#create').submit(function() { 
$.ajax({ 
    data: $(this).serialize(), 
    type: $(this).attr('method'), 
    url: $(this).attr('action'), 
    success: function(response) { 
     console.log(response); 
    } 
}); 
return false; 
}); 

Php файл (URL):

session_start(); 
header('Access-Control-Allow-Origin: *'); 
session_set_cookie_params(time() + 3600, '/', '.domain.com'); 
print_r($_SESSION); 
die; 

На странице с формой моя сессия [MemberId] = [некоторые INT];

Но если я сделать вызов AJAX вся переменная sesison пуста

Я попытался, глядя на Google для некоторых ответов, я пытался искать некоторые ответы на переполнение стека

, но ничего действительно помогли. И я не предпочитаю использовать iframe. Возможно, это было решение, но, возможно, есть кто-то, кто знает, что мне нужно делать здесь.

Форма расположена в области m.domain.com и файл PHP находится на domain.com

+0

Можете ли вы опубликовать необработанный запрос/ответ ajax, включая заголовки? – marekful

ответ

2

Итак, я установил ее. Я скопировал свой файл из корня в мой корневой каталог для мобильных устройств, а затем включил его через настоящий корень. Он работает сейчас. Я попробовал другие комментарии, но они тоже не будут работать.

Спасибо всем за быстрые ответы!

0

Я думаю, что вы должны сказать Jquery использовать на стороне клиента поддержку CORS в XHR2:

$('#create').submit(function() { 
    $.ajax({ 
     data: $(this).serialize(), 
     type: $(this).attr('method'), 
     url: $(this).attr('action'), 
     xhrFields: { withCredentials: true }, 
     crossDomain: true, 
     success: function(response) { 
      console.log(response); 
     } 
    }); 
    return false; 
}); 
+0

Я пробовал это уже, но он не работает :( –

+0

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

+0

, но если я установил свою сессию на domain.com, и я перехожу к m.domain.com, все работает нормально, но когда я делаю вызов ajax, я не получаю сеанс. Поэтому мои файлы cookie - это кросс-поддомен –

2

Также необходимо добавить header('Access-Control-Allow-Headers: X-Requested-With'); на серверную сторону для правильной обработки вызова.

more here Читайте о CORS и серверной части обработки

Смежные вопросы