2017-10-21 131 views
0

Je voudrais savoir comment faire un appel ajax à un serveur baikal à faire GET, POST, OPTIONS, PROPDIND, PROPPATCH, RAPPORT, mettre, déplacer, supprimer, verrouiller, déverrouillerAJAX appel au calendrier partagé baikal en utilisant sabreDAV

J'ai utilisé ce code here et je l'ai fait fonctionner mais je pense que je ne sais pas comment faire un bon appel ajax. Je fais l'appel à l'intérieur du même domaine pour éviter les problèmes inter-domaines pour le moment. J'ai utilisé CalDavZAP avant et je peux voir qu'ils font un appel en utilisant ajax mais je ne peux pas le faire fonctionner même après avoir regardé leur code.

J'ai essayé

var content = 'BEGIN:VCALENDAR VERSION:2.0 CALSCALE:GREGORIAN BEGIN:VEVENT CREATED:20171020T123121Z LAST-MODIFIED:20171020T220236Z DTSTAMP:20171020T220236Z UID:m54url1l-6xwy-snnp-rg0h-7yl5kgsfbadg SUMMARY:this is new TRANSP:OPAQUE CLASS:PUBLIC DTSTART;VALUE=DATE:20171025 DTEND;VALUE=DATE:20171026 END:VEVENT PRODID:-//Inf-IT//CalDavZAP 0.13.1//EN END:VCALENDAR'; 

$.ajax({ 
    type: 'PUT', 
    url: 'http://cal.domain.ca/cal.php/calendars/user/default/crazychars.ics', 
    beforeSend: function(req) { 
    req.setRequestHeader('Prefer', 'return=representation'); 
    req.setRequestHeader('If-None-Match', '*'); 
    }, 
    username:'username', 
    password:'password', 
    contentType: 'text/calendar', 
    processData: true, 
    data: content, 
    dataType: 'text', 
    success: function(data){ 
    console.log(data); 
    }, 
    error: function(){ 
    console.log(data); 
    event.preventDefault(); 
    } 
});//end of AJAX 

Après avoir essayé beaucoup de choses ci-dessus revient maintenant avec 415 (Type de support non pris en charge). J'ai essayé différents types de contentType et d'en-têtes supplémentaires sans meilleurs résultats. Après avoir cherché sur internet, je n'ai aucune idée de ce qu'il y a d'autre à faire. Site Baïkal ne fournit pas d'exemples de soumission au serveur d'où j'ai regardé.

voici quelques têtes de requête/réponse

Response Headers 
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre- 
check=0 
Connection:Keep-Alive 
Content-Type:application/xml; charset=utf-8 
Date:Sat, 21 Oct 2017 11:44:12 GMT 
Expires:Thu, 19 Nov 1981 08:52:00 GMT 
Keep-Alive:timeout=5, max=98 
Pragma:no-cache 
Server:Apache/2.4.6 
Transfer-Encoding:chunked 
X-Powered-By:PHP/5.6.31 
X-Sabre-Version:3.1.3 

Request Headers 
Accept:text/plain, */*; q=0.01 
Accept-Encoding:gzip, deflate 
Accept-Language:en,fr;q=0.8 
Authorization:Basic Z3N0bG91aXM6R3N0bG91aXM3OA== 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Length:345 
Content-Type:text/calendar 
Cookie:PHPSESSID=fqc0ctuskfv0cgaqeiq196gtf4; _ga=GA1.2.519255846.1496415686 
Host:cal.smbservices.ca 
If-None-Match:* 
Origin:http://cal.domain.ca 
Prefer:return=representation 
Referer:http://cal.domain.ca/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
X-Requested-With:XMLHttpRequest 

Répondre

0

Le problème que j'ai eu dans ma variable de contenu. Afin de faire un appel ajax avec un bon format chaque ligne nécessaire pour terminer avec \ r \ n

var content = 'BEGIN:VCALENDAR\r\nVERSION:2.0\r\nCALSCALE:GREGORIAN\r\nBEGIN:VEVENT\r\nCREATED:20171020T123121Z\r\nLAST-MODIFIED:20171020T220236Z\r\nDTSTAMP:20171020T220236Z\r\nUID:m54url1l-6xwy-snnp-rg0h-7yl5kgsfbadg\r\nSUMMARY:superman\r\nTRANSP:OPAQUE\r\nCLASS:PUBLIC\r\nDTSTART;VALUE=DATE:20171030\r\nDTEND;VALUE=DATE:20171030\r\nEND:VEVENT\r\nPRODID:-//Inf-IT//CalDavZAP0.13.1//EN\r\nEND:VCALENDAR';