SORU
7 NİSAN 2011, PERŞEMBE


İstek düz javascript çalışır YAZI KÖŞELERİ, ama neden bir WordPress kullanmak değil mi?

Çapraz Kökenli bir post isteği yapmak için çalışıyorum, ve bu gibi düz Javascript çalışıyor:

var request = new XMLHttpRequest();
var params = "action=something";
request.open('POST', url, true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.send(params);

Ama jQuery kullanmak istiyorum, ama bunu hemen yapamam. Bu istediğim şu:

$.ajax(url, {
    type:"POST",
    dataType:"json",
    data:{action:"something"}, 
    success:function(data, textStatus, jqXHR) {alert("success");},
    error: function(jqXHR, textStatus, errorThrown) {alert("failure");}
});

Bu başarısızlıkla sonuçlanır. Eğer biri çalışmıyor neden olduğunu bilen varsa, lütfen bize bildirin. Teşekkürler.

(1.5.1 ve jQuery Firefox 4.0 ve benim sunucu düzgün bir yanıt-Control-Allow-Access Kökeni Başlığı kullanıyorum)

CEVAP
15 NİSAN 2011, Cuma


TimK belirttiği Gibi, bu bir WordPress kullanmak 1.5.2 ile artık gerekli değil. GÜNCELLEME: Ama eğer özel başlıkları ekleyin veya kimlik bilgilerinin kullanılmasına izin vermek istiyorsanız (parola, ya da kurabiye, vb kullanıcı adı), okumaya devam edin.


Cevabı buldum sanırım! (4 saat ve lanet sonra)

//This does not work!!
Access-Control-Allow-Headers: *

Elle kabul edersiniz başlıkları (en az 4.0 & Krom 10.0.648.204 FF benim için böyleydi) belirtmeniz gerekir.

$jQuery.ajax yöntemi "x-istenen-ile" tüm etki alanları arası istekleri (sadece çapraz etki sanırım) başlık gönderir.

Eksik başlık SEÇENEKLERİ isteğine yanıt vermek için gereklidir:

//no longer needed as of jquery 1.5.2
Access-Control-Allow-Headers: x-requested-with

Eğer herhangi bir sigara "" başlıkları listesine dahil etmek gerekir (bir tane daha gönder): . basit geçirmeden

//only need part of this for my custom header
Access-Control-Allow-Headers: x-requested-with, x-requested-by

Bu yüzden hepsini bir araya getirmek için, burada benim PHP

// * wont work in FF w/ Allow-Credentials
//if you dont need Allow-Credentials, * seems to work
header('Access-Control-Allow-Origin: http://www.example.com');
//if you need cookies or login etc
header('Access-Control-Allow-Credentials: true');
if ($this->getRequestMethod() == 'OPTIONS')
{
  header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
  header('Access-Control-Max-Age: 604800');
  //if you need special headers
  header('Access-Control-Allow-Headers: x-requested-with');
  exit(0);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • modica89

    modica89

    24 HAZİRAN 2007
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009