2011-08-17 26 views
28

Sonunda bir API çağrısının parçası olacak bazı kodları miras aldım. Mevcut koda dayanarak, arama bir access_token ile JSON kodunu almak için bir gönderidir. Bu normalde basit olacak ve orada bulunan diğer tüm API'ler gibi, bu kod da müşteri sırrı için özelleştirilmiş bir httfde alan olmasını gerektirir.Özelleştirilmiş HTTPHeader Alanıyla JSON Gönderi

Bu çalışmayı, URLRequest vb. Ile Objective C'de yapabildim, ancak şimdi bir web bileşeni için çağrı oluşturduğum için, roadblock edilmiş durumdayım.

Ben başlığındaki bir http-equiv ile oldukça standart bir jquery yazı

 $.post('https://url.com', 
     {access_token:'XXXXXXXXXXXXXXXXXXX', 
     function(data){ 
      console.info(data); 
     }, 'json'); 

kullanıyorum. Ancak mesaj asla veriyi geri almaz ve sunucu kendisi herhangi bir aramanın yapılmadığını (eksik olanı bile) fark etmez.

Bu kodu not etmem ve yeniden başlatabilirim, ancak daha önce bu sorunla karşılaştıysa, lütfen herhangi bir içgörü sunun.

cevap

95

Ne gönderdiğinizde bir sözdizimi hatası var, ancak HTTP üstbilgileri $.post() aracılığıyla geçiremediğinizden farketmez.

jQuery sürümü> = 1,5'de sağlandıysanız, $.ajax()'a geçin ve headers (docs) seçeneğini verin. (Eğer jQuery eski bir sürümünü kullanıyorsanız, nasıl beforeSend seçeneği üzerinden bunu yapmak için size gösterecektir.)

$.ajax({ 
    url: 'https://url.com', 
    type: 'post', 
    data: { 
     access_token: 'XXXXXXXXXXXXXXXXXXX' 
    }, 
    headers: { 
     Header_Name_One: 'Header Value One', //If your header name has spaces or any other char not appropriate 
     "Header Name Two": 'Header Value Two' //for object property name, use quoted notation shown in second 
    }, 
    dataType: 'json', 
    success: function (data) { 
     console.info(data); 
    } 
}); 
+0

Çok teşekkür ederim! Bana saat hayal kırıklığını kurtardın. Şimdi, nesne Safari'de çekiliyor, ancak Firefox veya Chrome'da değil. Bu bilinen bir sorun mu? Eğer öyleyse, içgörünüzü çok isterim. Değilse, anlayacağım. – Izzy

+0

Chrome ve Firefox'u kullanırken sunucuya gönderilen (Geliştirici Araçları veya Firebug aracılığıyla) neler görüyorsunuz ve ne görüyorsunuz? İsteğin gelen ve uygun olup olmadığını görmek için sunucuda hangi hata ayıklama var? – JAAulde

+0

Firebug'da hiç hata yok, ancak geri dönüş yok. Firefox Web Konsolu'nda şunu görüyorum: 'OPTIONS https: // [url.com] [HTTP/1.1 200 OK 441ms]' ve Chrome Geliştirici araçlarında şunu görüyorum: XMLHttpRequest 'https://url.com'u yükleyemiyor. Origin null, Access-Control-Allow-Origin tarafından izinli değil. ' Sunucu, bir isteğin geldiğini gösterir. İstek uygun değilse, bir hata iletisi kaydeder. – Izzy

0

Bahsettiğiniz gibi çalıştı, ancak sadece ilk parametre geçiyor ve hepsi dinlenmeye edilir sunucuda undefined olarak görünüyor. JSONWebToken başlığının bir parçası olarak geçiyorum.

.ajax({ 
    url: 'api/outletadd', 
    type: 'post', 
    data: { outletname:outletname , addressA:addressA , addressB:addressB, city:city , postcode:postcode , state:state , country:country , menuid:menuid }, 
    headers: { 
     authorization: storedJWT 
    }, 
    dataType: 'json', 
    success: function (data){ 
     alert("Outlet Created"); 
    }, 
    error: function (data){ 
     alert("Outlet Creation Failed, please try again.");   
    } 

    }); 
5

biri()

$.ajaxSetup({ 
    headers: { 
     'Content-Type': 'application/json', 
     'Accept': 'application/json' 
    } 
}); 

ardından .post yapmak jquery ile yapılan tüm gelecek istek için başlıkları ayarlayacaktır() sonra bu .post kullanmak isteyen normal çağırırsa.