2014-09-24 3 views
10

Я написал веб-приложение, которое использует много вызовов $.post с JQuery. Теперь я хотел бы отправить withCredentials: true с ним, чтобы сохранить сессию живой, похоже, что это в $.ajax (а также работает, как это):

$.ajax({ 
      type: 'post', 
      url: 'http://example.com/server/api.php', 
      crossDomain: true, 
      dataType: "json", 
      xhrFields: { 
       withCredentials: true 
      }, 
      data: { 
       username : 'test', 
       password : 'test' 
      }, 
      success: function (d) { 
       $('body').html(d.status); 
      } 
     }); 

Это потому, что теперь я хотел бы, чтобы загрузить PHP файлы в мой сервер и экспортировать клиентскую сторону с помощью Cordova. (withCredentials: true включен только из-за тестирования на моем сервере localhost) Могу ли я упаковать его в звонок $.post или мне нужно заменить все вызовы? (Я бы написать новую функцию, которая будет выглядеть примерно $ .post)

+0

и вопрос ?? – iJade

+1

Duplicate: http://stackoverflow.com/questions/16689496/cross-domain-ajax-request-basic-authentication –

+0

@ZeeTee, ссылаясь на вопрос, который не имеет корректного правильного ответа, является средним: P – MoshMage

ответ

14

Вы можете использовать jQuery.ajaxSetup() установить параметры по умолчанию, что каждый Ajax запрос будет использовать (в том числе и $.post$.get)

$.ajaxSetup({ 
    crossDomain: true, 
    xhrFields: { 
     withCredentials: true 
    }, 
    username: 'test', 
    password: 'test' 
}); 

$.post('http://example.com/server/api.php', { 
    username: 'test', 
    password: 'test' 
}, function (d) { 
    $('body').html(d.status); 
}, 'json'); 

Кроме того, предупреждение относительно этого API

Примечание: параметры, указанные здесь, будут влиять на все вызовы $ .ajax или Ajax на основе де такие как $ .get(). Это может вызвать нежелательное поведение , поскольку другие вызывающие абоненты (например, плагины) могут ожидать стандартных настроек по умолчанию. По этой причине мы настоятельно рекомендуем использовать против использования этого API. Вместо этого задайте параметры явно в вызове или определите простой плагин для этого.

из JQuery документации

+0

Я уже пробовал это, теперь он работает, хотя я поместил его в конец файл, а не в начале – JSHelp

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