Существует отличный плагин easyXDM, который, используя наиболее подходящий транспорт, манипулирует запросами между разными доменами или поддоменами.
Документация:
http://easyxdm.net - официальный сайт плагина
http://habrahabr.ru/post/120336/ - статья на Хабре
https://github.com/oyvindkinsey/easyXDM - директория на GitHub
Этого мне хватило, чтобы разобраться, как без особых проблем отправлять POST-запросы на API, находящийся на поддомене.
Тест кроссбраузерной авторизации
<form id="myForm" method="POST">
<div>
<input type="text" id="name" name="Name" class="k-textbox" />
</div>
<div>
<input type="text" id="password" name="Password" class="k-textbox" />
</div>
<input type="submit" value="Отправить" class="k-button" />
</form>
<script>
$('#myForm').ajaxForm({
beforeSubmit: function (arr, form, options) {
//if (options.url.indexOf(location.host) < 0) { // если хост удаленный то используем наш метод
var json = {};
for (var i = 0; i < arr.length; i++) { // преобразуем сериализованные данные формы в нормальный объект js готовый к нашей сериализации (сама форма их передает в весьма странном виде)
json[arr[i].name] = btoa(arr[i].value);
}
rpc.request({
// шлем кросс доменный запрос, подставляя наши параметры
url: apiRoute + "auth",
method: "POST",
data: json,
headers: {
'RequestVerificationToken': token
}
}, function (response) {
alert('Success');
}, function (response) {
alert('Error\n' + response.message);
return false;
});
return false; //останавливаем нативный ajax запрос от jQ
//}
//return false;
}
});
var rpc = new easyXDM.Rpc({
remote: apiRoute + "Scripts/EasyXDM"
},
{
local: {
request: {}
},
remote: {
request: {}
}
});
</script>
Документация:
http://easyxdm.net - официальный сайт плагина
http://habrahabr.ru/post/120336/ - статья на Хабре
https://github.com/oyvindkinsey/easyXDM - директория на GitHub
Этого мне хватило, чтобы разобраться, как без особых проблем отправлять POST-запросы на API, находящийся на поддомене.
Тест кроссбраузерной авторизации
<form id="myForm" method="POST">
<div>
<input type="text" id="name" name="Name" class="k-textbox" />
</div>
<div>
<input type="text" id="password" name="Password" class="k-textbox" />
</div>
<input type="submit" value="Отправить" class="k-button" />
</form>
<script>
$('#myForm').ajaxForm({
beforeSubmit: function (arr, form, options) {
//if (options.url.indexOf(location.host) < 0) { // если хост удаленный то используем наш метод
var json = {};
for (var i = 0; i < arr.length; i++) { // преобразуем сериализованные данные формы в нормальный объект js готовый к нашей сериализации (сама форма их передает в весьма странном виде)
json[arr[i].name] = btoa(arr[i].value);
}
rpc.request({
// шлем кросс доменный запрос, подставляя наши параметры
url: apiRoute + "auth",
method: "POST",
data: json,
headers: {
'RequestVerificationToken': token
}
}, function (response) {
alert('Success');
}, function (response) {
alert('Error\n' + response.message);
return false;
});
return false; //останавливаем нативный ajax запрос от jQ
//}
//return false;
}
});
var rpc = new easyXDM.Rpc({
remote: apiRoute + "Scripts/EasyXDM"
},
{
local: {
request: {}
},
remote: {
request: {}
}
});
</script>
Комментариев нет:
Отправить комментарий