2014-09-24 16 views
10

Tôi đã viết một ứng dụng web sử dụng số của các cuộc gọi $.post của cuộc gọi với JQuery. Bây giờ tôi xin gửi đến withCredentials: true với nó để giữ một phiên còn sống, những gì trông giống như thế này trong $.ajax (và cũng làm việc như thế này):

$.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); 
      } 
     }); 

Điều này là do bây giờ tôi muốn tải lên các tập tin PHP để tôi máy chủ và xuất phía máy khách bằng Cordova. (withCredentials: true chỉ được bao gồm vì thử nghiệm trên máy chủ cục bộ của tôi) Tôi có thể gói số này vào cuộc gọi $.post hoặc tôi có cần phải thay thế tất cả các cuộc gọi không? (Tôi sẽ viết một hàm mới đó sẽ trông giống như $ .post)

+0

và câu hỏi là ?? – iJade

+1

Trùng lặp: http://stackoverflow.com/questions/16689496/cross-domain-ajax-request-basic-authentication –

+0

@ZeeTee liên kết đến câu hỏi không có câu trả lời chính xác được đánh dấu có nghĩa là: P – MoshMage

Trả lời

14

Bạn có thể sử dụng jQuery.ajaxSetup() để đặt tùy chọn mặc định mà mỗi yêu cầu ajax sẽ sử dụng (bao gồm cả $.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'); 

Ngoài ra, cảnh báo về API này

Lưu ý: Các cài đặt được chỉ định ở đây sẽ ảnh hưởng đến tất cả các cuộc gọi đến $ .ajax hoặc Dựa trên Ajax r policies chẳng hạn như $ .get(). Điều này có thể gây ra hành vi không mong muốn vì người gọi khác (ví dụ: plugin) có thể mong đợi cài đặt mặc định thông thường. Vì lý do đó, chúng tôi khuyên bạn nên chống lại việc sử dụng API này. Thay vào đó, hãy đặt các tùy chọn một cách rõ ràng trong cuộc gọi hoặc xác định một plugin đơn giản để thực hiện việc này.

từ jQuery tài liệu

+0

Tôi đã thử điều này, bây giờ nó hoạt động mặc dù tôi đã đặt nó ở cuối tập tin và không phải lúc đầu – JSHelp

Các vấn đề liên quan